proto
2015-12-13 14:14
这节课的
对象原型链上的this
这一小节中有这样一个case:
var o={f:function(){return:this.a+this.b}} var p=Object.creat(o) p.a=1 p.b=4 console.log(p.f())//5
这里老师讲的太含糊其辞了,什么叫this也能指向对象p呀?
我激动了!!不好意思!!
我感觉从作用域来理解this好一点
一句话理解this.不用管this在什么方法中。谁调用.this指向谁就对了。
此时应该是this指向p吧!所以结果。。。。。。
所以,遇到与面向对象相关的this指向问题时,可以认为JavaScript引擎偷偷的在函数中传入了一个参数(第一个参数,要牢记!!),只是你看不见,参数值就是 . 之前的对象。。然后,方法用this来接收了这个对象,然后你就可以在方法中尽情地使用this了。
告诉你个技巧,要理解this指向谁并不难。。
比如:
var o={f:function(){return:this.a+this.b}}
o.f();
可以理解成
f(o);
及把o作为参数传入了f中,然后f用一个变量叫做this来接收了这个o。。所以在
f中,this.a就相当于 o.a,this,b就相当于o.b
我觉得你理解可能有点问题。
你也确定用var p = Object.create(o); 给 p.a = 1; 是赋值到o.a上?
你确定用var p = new o;能 new出来?
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题