this作用域
1.this总是指向它所在方法的对象,比如
var name="zyt"
function global(){
console.log(this.name);//zyt 因为当前函数是全局函数,所以它的this指向window;
}
2.如果函数作为对象的方法调用,this指向这个对象,比如
function global(){
console.log(this.name);
}
var obj={};
obj.name="c"
obj.show=global;
obj.show(); //c
3.构造函数中的this指向新创建的对象本身,比如
function global(){
this.name = "cc";
}
var ob = new global();
console.log(ob.name); //cc
4.关于call,apply和bind改变this指向
var name = "window";
function global(){
this.name = "fun";
}
function show() {
console.log(this.name);
}
show(); //window
show.apply(new global()); // fun
show.call(new global()); // fun
let fn=show.bind(new global());
fn(); //fun
/*三者之间都是为了改变this的指向,不同之处在于,applay和 bind第二个参数传递的是一个数组,而call后面传
*/递的是一个个的参数,且bind改变this指向之后返回一个函数

浙公网安备 33010602011771号