我看到了一段包含以下代码的程序:
var data = function() {
function Metadata() { /*some initialization here*/ }
Metadata.prototype = Object.create(Backend.prototype);
Metadata.prototype.constructor = Metadata;
return Metadata;
}
我很难理解实际上正在发生什么,以及如何使用返回的对象。如果我理解得正确,data
现在将是一个应该像这样初始化的对象
var d = new data()
但我不理解下面的代码为什么要使用Object.create()
而不是new
关键字:
Metadata.prototype = Object.create(Backend.prototype);
Metadata.prototype.constructor = Metadata;
他们做什么?他们是否必要?Object.create
和new
之间有什么区别?
Metadata.prototype = Object.create(Backend.prototype);
和Metadata.prototype = new Backend()
有什么区别? - Karel BílekObject.create
时,构造函数不会被调用。因此,如果您只想扩展Backend
的原型,则使用Object.create
是有意义的。 - wjohnsto