var PERSON = {
name: 'Jack',
getName: function () {
return this.name;
}
}; 性能
function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
}
/***************************************************/
var p_obj = new Person('Jim');
/***************************************************/
function test_obj() {
var start = +new Date(),
p = PERSON,
i = 1;
for (; i < 10000000; i++) {
p.getName();
}
alert('Object: ' + ((+new Date()) - start));
}
/***************************************************/
function test_prototype() {
var start = +new Date(),
po = p_obj,
j = 1;
for (; j < 10000000; j++) {
po.getName();
}
alert('prototype: ' + ((+new Date()) - start));
}
/***************************************************/
test_obj();
test_prototype(); this
經過循環調用2種模式下的訪問狀況(ie7環境): prototype
性能方面: 對象
大多狀況下對象字面量模式要比原型快些兒,但也有原型比對象字面量快的時候; get
移植性方面: 原型
很明顯,對象字面量模式的移植性更好,由於它能夠作爲子樹便利掛到任何須要的對象上; io