20 - JavaScript on this

关于this指向

构造函数创建对象: new Object()
字面量创建对象:{}

1》如果产生了函数中还有一个函数(闭包).内部函数中的this指向于window

改变this指针(指向)

1>赋值

var userName ="张三";  //window对象添加了一个userName属性值为 ==》张三
var obj = {
    userName:"李四",
    run:function(){

    var That = this; //this==>obj

    return function(){

        return That.userName; // this===>window    返回的结果就是张三   。。。返回李四???

    };

}
}

alert(  obj.run()()  );




2>call  、 apply()

//改变指针

var userName = "张三";
var obj = {

userName:"李四",
run:function(){

    return this.userName;//this===> obj;
}

}

//alert(obj.run()); //这里弹出了李四

//让obj中的run里面的this改变this指向  , 指向于window

alert(   obj.run.call(window)    );



var userName = "张三";

var obj = {

userName:"李四",
run:function(){
    //this===>obj

    return function(){
        //this===>window
        return this.userName;

    }

}
}
alert(  obj.run()()  );

alert(  obj.run().call(obj)   );  //让obj.run   return的这个函数中的this不再指向于window了,  obj*/


alert(  obj.run().apply(obj)  );





//复制

function parent(num1,num2){

return num1+num2;

}


function calls(a,b){

return parent.call(window,a,b);

}


function applys(a,b){

return parent.apply(window,[a,b]);
}

alert(  calls(8,8)   );	
alert(  applys(8,8)   );	
Published 25 original articles · won praise 0 · Views 209

Guess you like

Origin blog.csdn.net/weixin_42746553/article/details/104468392