热门

最新

红包

立Flag

投票

同城

我的

发布
feelgoodsky
feelgoodsky
5 年前
truefeelgoodsky

SAP MM库存盘点流程

CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
对比一下两种把Bar.prototype关联到Foo.prototype的方法(图一是正确的方式):如果忽略掉Object.create(..)方法带来的轻微性能损失(抛弃的对象需要进行垃圾回收),它实际上比ES6及其之后的方法更短而且可读性更高。不过无论如何,这是两种完全不同的语法。两种错误方式(图二):Bar.prototype = Foo.prototype并不会创建一个关联到Bar.prototype的新对象,它只是让Bar.prototype直接引用Foo.prototype对象。因此当你执行类似Bar.prototype. myLabel = ...的赋值语句时会直接修改Foo.prototype对象本身。显然这不是你想要的结果,否则你根本不需要Bar对象,直接使用Foo就可以了,这样代码也会更简单一些。Bar.prototype = new Foo()的确会创建一个关联到Bar.prototype的新对象。但是它使用了Foo(..)的“构造函数调用”,如果函数Foo有一些副作用(比如写日志、修改状态、注册到其他对象、给this添加数据属性,等等)的话,就会影响到Bar()的“后代”,后果不堪设想。
立即登录