1. 程式人生 > >javaScript中的with()是什麼方法?

javaScript中的with()是什麼方法?

首先來看一段程式碼:

<html>

    <head>
        <script type="text/javascript">
            function validate_email(field, alerttxt) {    
                with(field)

{
                    apos = value.indexOf("@")
                    dotpos = value.lastIndexOf(".")
                    if(apos < 1 || dotpos - apos < 2)  {
                        alert(alerttxt);
                        return false
                    } else {
                        return true
                    }
                }
            }

            function validate_form(thisform) {
                with(thisform) {
                    if(validate_email(email, "Not a valid e-mail address!") == false) {
                        email.focus();
                        return false
                    }
                }
            }
        </script>
    </head>

    <body>
        <form action="submitpage.htm" onsubmit="return validate_form(this);" method="post">
            Email: <input type="text" name="email" size="30">
            <input type="submit" value="Submit">
        </form>
    </body>

</html>

這個是一個網站教程的例子,相信很多人都會有疑問,裡面在with ( )中嵌套了if,這個with()是什麼方法?這個with()就是和if 一起用的嗎?

 

其實with()和if()沒有關係。

with(obj)作用就是將後面的{}中的語句塊中的預設物件設定為obj,那麼在其後面的{}語句塊中引用obj的方法或屬性時可以省略obj.的輸入而直接使用方法或屬性的名稱。比如:
不用with()時:
function validate_email(field,alerttxt){
      field.apos=value.indexOf("@")
      field.dotpos=value.lastIndexOf(".")
      if (field.apos<1 || field.dotpos-field.apos<2) {
            alert(alerttxt);
            return false
      }else {
            return true
      }
}

用了with(field)後,上面函式中的field.都可以省略了,減少了輸入的工作量。

 

with物件能夠使我們很方便的使用某個物件的一些屬性,而不用每次都去寫
物件名.屬性 的形式,直接使用物件名。