function a(){};a.prototype.testThis = function() { console.log(a.prototype == this); // false console.log(a == this); // false console.log(b == this); // true};var b = new a();b.testThis(); // 按理说,prototype是一个对象,对象的this应该指向对象本身,也就是prototype,经过测试,它不指向a.prototype,也不指向a,而指向b。
4 回答
慕妹3146593
TA贡献1820条经验 获得超9个赞
首先,new的时候,会将b的_proto_指向a的prototype,类似一个继承的过程(所以b.constructor==a)
其次,this关键字是在执行时才有指向的东西,取决于执行到那一行的时候,执行对象是谁
最后,b.testThis(),进入方法块儿后,this应当指向执行对象,b调用的该方法,this只能指向b,而不会指向其他的。a是b的构造方法,a.prototype是a的原型对象,只有b._proto_跟a.prototype有关系。
添加回答
举报
0/150
提交
取消