zoukankan      html  css  js  c++  java
  • js中with、this的用法

    1 with 语句 为一个或一组语句指定默认对象。

    用法:with (<对象>) <语句>;

    with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用:

    x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10); y = Math.tan(14 * Math.E);

    当使用 with 语句时,代码变得更短且更易读:

    with (Math) {x = cos(3 * PI) + sin(LN10);y = tan(14 * E); }

    2 this 对象 返回“当前”对象。

    在不同的地方,this 代表不同的对象。如果在 JavaScript 的“主程序”中(不在任何 function 中,不在任何事件处理程序中)使用 this,它就代表 window 对象;如果在 with 语句块中使用 this,它就代表 with 所指定的对象;如果在事件处理程序中使用 this,它就代表发生事件的对象。

    一个常用的 this 用法:

    <script> ... function check(formObj) {... } ... </script>

    <body ...> ... <form ...> ... <input type="text" ... onchange="check(this.form)"> ... </form> ... </body>

    这个用法常用于立刻检测表单输入的有效性。

    3 举例

    with语句用于设置代码在特定对象中的作用域。

    它的语法:

    with(expression)statement

    例如:

    var sMessage = "hello";

    with(sMessage){

    alert(toUpperCase());//输出"HELLO"

    }

    在这个例子中,with语句用于字符串,所以在调用toUpperCase()方法时,浏览器将检查该方法是否是本地的函数。如果不是,它将检查伪对象sMessage,看toUpperCase是否为该对象的方法,然后alert输出"HELLO",因为浏览器在解释程序时找到了字符串"hello"的toUpperCase()方法。

    在W3School上的一段代码的解释

    <html>

    <head>

    <script type="text/javascript">

    function validate_required(field,alerttxt) {

    with (field) {

    if (value==null||value=="") {

    alert(alerttxt);return false;

    }else {

    return true;

    }

    }

    }

    function validate_form(thisform) {

    with (thisform) {

    if (validate_required(email,"Email must be filled out!")==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>

    提交表单时,执行validate_form方法,并把表单对象作为参数传入方法中,在validate_form方法中,先判断validate_required方法,由于该方法是公共的,所以可以直接找到,而作为参数的对象email在当前作用域中不存在,所以需要到thisform这个表单对象的作用域中查找name属性是email的表单元素,找到后,执行validate_required方法,在validate_required方法中需要查找value对象,而在validate_required方法的作用域中找不到value属性,因此需要到field中查找(field这时就是name等于email表单元素),field中存在value属性,如果该属性的值为空,给出提示信息并返回false,否则返回true,如果validate_required方法返回true,表单成功提交,如果返回false,email获得焦点并且表单不提交。

  • 相关阅读:
    FTPUtil工具类
    maven配置默认jdk版本
    IDEA 使用lombok
    当前时间是否在区间范围内
    获取剩余的秒数
    java类执行顺序
    java8 关于Set集合的线程安全使用
    反射之设置对象字段值以及根据字段获取对象字段值
    ES方法使用注意
    java导出标题多行且合并单元格的EXCEL
  • 原文地址:https://www.cnblogs.com/zxktxj/p/2566658.html
Copyright © 2011-2022 走看看