我读了几篇关于原型与伪经典实例化的文章,但仍有几个问题。我在下面提供了代码以供说明。
问题是:
我应该注意哪些重大的性能问题?
var Person = function() {
hopes: function(){},
dreams: function(){}
};
var John = Object.create(Person); // not supported in older browsers
-
var Human = function() {
};
Human.prototype.hopes = function(){}; // could add both hopes & dreams with an object
Human.prototype.dreams = function(){};
var Alice = new Human();
答案 0 :(得分:1)
在第一个示例中,您的语法有点偏,但是,这些将导致相似的对象。在第一个例子中,它应该是:
var Person = {
hopes: function(){},
dreams: function(){}
};
但是有一些细微的差别。使用new
关键字会将对象添加到原型链中,例如Alice
现在将使用Human
的原型链。 Object.create
将对象的原型设置为参数,例如Person
是John
的原型。这些通常是相似的,除非您执行Object.create(null)
,在这种情况下,您没有获得基本对象原型,就像您执行了新的Object();