• 【你不知道的JavaScript


    this的四种绑定规则

    1.默认绑定 2.隐式绑定 3.显式绑定 4.new绑定

    1.默认绑定

    在this没有知名绑定的对象时,默认指向全局对象window

    function foo(){
        console.log('foo函数:'+this.a);
    }
    var a=2;
    foo();
    console.log('全局对象:'+window.a);

     

    2.隐式绑定

    当函数引用有上下文对象时,隐式绑定规则会把函数调用中的this绑定到这个上下文对象。

    对象属性引用链中只有上一层或者说最后一层在调用位置中起作用

    function foo(){
        console.log(this.a);
    }
    var obj2={
        a:42,
        foo:foo
    };
    
    var obj1={
        a:2,
        obj2:obj2
    };
    
    obj1.obj2.foo();

     

    3.显式绑定

    使用call(...)和apply(...)方法,直接指定this的绑定对象,称之为显式绑定

    function foo(){
        console.log(this.a);
    }
    var obj2={
        a:42,
        foo:foo
    };
    var obj1={
        a:2,
        obj2:obj2
    };
    var a=100;
    foo(obj1);
    foo(obj2); foo.call(obj2); foo.call(obj1); foo.call(window);

    4.new绑定

    使用 new 来调用 foo(..) 时,我们会构造一个新对象并把它绑定到 foo(..) 调用中的 this上

    function foo(a) {
    this.a = a;
    }
    var bar = new foo(2);
    console.log( bar.a ); // 2

    优先级

    new绑定 > 显式绑定 > 隐式绑定 > 默认绑定

  • 相关阅读:
    MyBatis+MySQL 返回插入的主键ID
    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml
    微信自动回复消息示例
    微信自定义菜单
    微信获取二维码
    微信被动回复用户消息-文本消息-填坑
    微信获得access-token
    设置ckeditor的高度
    Java三行代码搞定MD5加密
    Highchart
  • 原文地址:https://www.cnblogs.com/HDWdemo/p/13804318.html
Copyright © 2020-2023  润新知