我有一个问题。
我希望你关闭这个狗屎 - 很多人都是javascript-gods - 但他们写的是Ecmascript3 -
哈哈哈哈 - 如果你不明白Object.create()做什么,那么闭嘴@LJ_1102 !!!!
我已经在jsperf.com上做了一个测试,关于操纵一个对象的两种不同方式。
请不要和我讨论" object.create(p,pr)"和新实例()。
Object.create()是简单代码的未来和非常简单。
--->问题不是:需要我一个函数并设置原型和构造函数或需要我Object.create(原型,新属性)< ---这是一个问题信仰
我的问题:为什么Chrome和Firefox的搜索结果有很大差异?
我知道 - 两个不同的Javascript引擎。然而为什么如此不同?
测试:
var obj = { name: "", get getName(){return this.name;}, set setName(x){this.name = x;} }; function func(x){ var that = this; this.name = ""; this.getName = function(){return that.name;}; this.setName = function(x){that.name = x;}; } // Chrome: 1,536,214 ops/sec // Firefox: 302,952 ops/sec var newObj = Object.create(obj); obj.setName = "svenskanda"; obj.getName; // Chrome: 315,572 ops/sec // Firefox: 1,360,496 ops/sec var newObj = new func(); newObj.setName("Alex"); newObj.getName();
在Chrome中,Object.create() - getter / setter更快。
在Firefox中,新构造函数方法更快。
你能解释一下吗?
答案 0 :(得分:1)
如果你想知道为什么存在这样的速度差异请查看源代码,我担心你不会找到一个同样知道完全相同的内部代码的chrome / firefox开发人员其他项目,即使你对这个答案做了什么?!
他们是两个完全不同的javascript引擎。
此外,你在'基准'中做了两件完全不同的事情。
Object.create
的第一个参数是要创建的对象的原型,因此您使用Object.create
创建的所有对象共享相同 名称<在您的情况下/ em>属性。在“构造函数”基准测试中,您将使用对象的每个构造构造成员方法。
首先要学会正确使用原型和相关方法,然后编写一些实际上遇到基于语言性能的性能问题的代码,然后分析代码并找出瓶颈。