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对象能够使我们很方便的使用某个对象的一些属性,而不用每次都去写
对象名.属性 的形式,直接使用对象名。

猜你喜欢

转载自blog.csdn.net/mini_1251861209/article/details/80666494