这似乎是一个特别模糊的观点,但是我试图提高我在整个Javascript语言中的基础(更具体地说,它是最好和最有效的实践).
在http://jsperf.com/中测试理论时,我想出了一些奇怪的结果:
假设我们有两个"相同"的原型,定义如下:
Object1
var Object1 = function() {}
Object1.prototype.defaults = {
radius: 400,
up: 1
}
Object1.prototype.centerOffset = function() {
return this.defaults.radius*this.defaults.up;
}
Run Code Online (Sandbox Code Playgroud)
对象2
var Object2 = function() {}
Object2.prototype = {
defaults: {
radius: 400,
up: 1
},
centerOffset: function() {
return this.defaults.radius*this.defaults.up;
}
}
Run Code Online (Sandbox Code Playgroud)
Object1具有一致的(如果边际:〜3%)的速度优势超过Object2的执行以下简单的操作时:
var o = new Object1();
var offset = o.centerOffset();
Run Code Online (Sandbox Code Playgroud)
&
var o = new Object2();
var offset = o.centerOffset();
Run Code Online (Sandbox Code Playgroud)
你可以在这里自己运行测试.我在OSX 10.6.8上使用Chrome 25.
我想知道的是: