《Learning JavaScript Design Patterns》原型链中的this值问题?
这本书里面工厂模式的代码如下
执行carFactory.createVehicle()时调用VehicleFactory.prototype.createVehicle()函数,此时this的值是VehicleFactory
但是,执行下面的代码时,
使用原型链继承后,同样执行VehicleFactory.prototype.createVehicle()函数,为什么此时this的值是TruckFactory?
请问这是什么机理?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
JS对象设置新属性机制是:原型中有则覆盖,无则创建。都是基于当前实例中的this
this的值不是根据函数创建的时候指定的,而是与运行时环境有关的,它指向的是调用函数的对象。
这里createVehicle()两次分别被carFactory和truckFactory两个不同的对象调用,两次调用分别指向他们。
一般来讲:
mytest()
),匿名函数执行,this
指向全局对象。obj.test()
),this
指向该对象。普通函数this谁调用指向谁,object.func()指定func的调用者为object,则this指向object。
非严格模式下没有指定调用者this指向全局对象(浏览器环境window,Node环境global);
严格模式下没有指定调用者this为undefined.
关于this:http://wintc.top/article/28