您的位置:首页 > Web前端 > JavaScript

js 中this指向问题

2018-04-04 18:40 453 查看
在这里说句个人对this 一点点想法,虽然很基础;但是很总要,因为JS 是一门面向对象的编程语言,如果将来只要你想面向对象编程;那么this是必不可免的。能用面向对象就尽量用面向对象编程,因为他的课拓展性好,只不过要看你能把这个对象抽象成什么样子了。简单明了this 指的是啥呢:距离他最近的对象
一般情况下this在方法中使用;易混点:容易误认为在那个方法里面就指的那个对象,正确理解;那个对象调用的这个方法;this 就指这向这个对象,看this 指的是谁;就看距离他最近的;并且调用他所在方法的这个对象。
1:this 指的是全局对象
function test (){
this.a =1 
console.log(this)}
test()
2:.作为对象方法调用,this 指代上级对象
function test2(){
console.log(this)
console.log(this.b)
}
var a = new s{}
a.b = test2
a.x =1 
a.b() // a 对象    1
3:.作为构造函数调用,this 指代new 出的对象
function test(){
this.x = 1;
}
var o = new test();
alert(o.x); // 1
//运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:
var x = 2;
function test(){
this.x = 1;
}
var o = new test();
alert(x); //24.apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数var x = 0;
function test(){
alert(this.x);
}
var o={};
o.x = 1;
o.m = test;
o.m.apply(); //0
//apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。如果把最后一行代码修改为

o.m.apply(o); //1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js