perf
为什么我们构建一个原型继承链,而不是使用对象组合.通过原型查看链中的每个步骤都是昂贵的.
这是一些虚拟示例代码:
var lower = { "foo": "bar" }; var upper = { "bar": "foo" }; var chained = Object.create(lower,pd(upper)); var chainedPrototype = Object.create(chained); var combinedPrototype = Object.create(pd.merge(lower,upper)); var o1 = Object.create(chainedPrototypes); var o2 = Object.create(combinedPrototypes);
o2.foo比o1.foo快,因为它只有两个原型链,而不是三个.
因为原型链起步很贵,为什么要构造一个而不是使用对象组合?
另一个更好的例子是:
var Element = { // Element methods } var Node = { // Node methods } var setUpChain = Object.create(Element,pd(Node)); var chained = Object.create(setUpChain); var combined = Object.create(pd.merge(Node,Element)); document.createChainedElement = function() { return Object.create(chained); } document.createCombinedElement = function() { return Object.create(combined); }
我没有看到任何代码合并原型对象的效率.我看到很多代码构建链接的原型.为什么后者更受欢迎?
我可以想到的唯一原因是使用Object.isPrototypeOf来测试链中的各个原型.
除了isPrototypeOf以外,使用遗传比组合有明显的优势吗?
解决方法
原文地址:https://www.jb51.cc/js/154479.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。