JS中this的指向和改变this指向

this的指向

1.直接调用,指向window

var x=1;
console.log(this.x);
//输出 1

2.在函数里调用,指向window

var x=1;
function fn(num){
    var x=2;
    console.log(this.x);
}
fn();
//输出 1

3.在构造函数里用new调用,指向创建的新实例对象

function fn(){
    console.log(this);
}
let a=new fn();
//输出 {}(指向对象a)

4.在对象的方法里调用,指向调用它的对象

function fn(num){
    this.x=num;
    this.fn1=function(){
        console.log(this.x)
    }
}
let a=new fn(3);
a.fn1();
//输出 3

改变this的指向

1.用new调用函数,改变指向new的实例对象

function fn(){
    console.log(this);
}
let a=new fn();
//输出 {}(指向对象a)

2.bind

function fn(){
    console.log(this.name);
};
var obj={
    name:'jack',
};
var b=fn.bind(obj);
b();

3.call

function fn(name){
    this.name=name;
    this.fn1=function(){
        console.log(this.name);
    }
};
var obj={};
fn.call(obj,'jack');
console.log(obj.name);
obj.fn1();

4.apply

function fn(name,age){
    this.name=name;
    this.age=age;
    this.fn1=function(){
        console.log(this.name);
    }
};
var obj={};
fn.apply(obj,['jack',18]);
console.log(obj.age);
obj.fn1();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容