首页 > Web开发 > 详细

js中的this(四种绑定)

时间:2021-04-01 18:51:02      阅读:18      评论:0      收藏:0      [点我收藏+]

js中的this(四种绑定)

默认绑定

非严格模式下:

        var bar=2021;
        function foo(){
            var bar=1998;
            console.log(this.bar);
        }
        foo();//2021

严格模式下:

        "use strict"
        var bar=2021;
        function foo(){
            var bar=1998;
            console.log(this.bar);
        }
        foo();//Uncaught TypeError: Cannot read property ‘bar‘ of undefined

隐式绑定

        var foo=1998;
        function bar(){
            console.log(this.foo);
        }
        var obj={
            foo:2021,
            bar:bar       
        }
        obj.bar();//2021

隐式丢失

var foo=1998;
        function bar(){
            console.log(this.foo);
        }
        var obj={
            foo:2021,
            bar:bar       
        }
        var baz=obj.bar;
        baz();//1998
        var foo=1998;
        function bar(){
            console.log(this.foo);
        }
        var obj={
            foo:2021,
            bar:bar       
        }
        setTimeout(obj.bar,0)//1998
        //setInterval和setTimeout中如果出现this,那么这个this指向的是window对象

硬绑定

        var foo="我是全局 foo";
        function bar(){
            console.log(this.foo);
        }
        var obj1={
            foo:"我是obj1 foo",
            bar:bar       
        }
        var obj2={
            foo:"我是obj2 foo",
        }
        var obj3={
            foo:"我是obj3 foo"
        }
        obj1.bar.apply(obj2)//我是obj2 foo
        obj1.bar.call(obj3)//我是obj3 foo

new绑定

 var foo="我是全局 foo";
        function bar(foo){
            this.foo=foo;
        }
        var baz=new bar("新传的bar");
        console.log(baz.foo);//新传的bar

js中的this(四种绑定)

原文:https://www.cnblogs.com/czmwww/p/14606882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!