我在node.js中运行以下命令:
function TextCell(text) {
this.text = text.split("\n");
}
TextCell.prototype.minWidth = function() {
return this.text.reduce(function(width, line) {
return Math.max(width, line.length);
}, 0);
};
TextCell.prototype.minHeight = function() {
return this.text.length;
};
TextCell.prototype.draw = function(width, height) {
var result = [];
for (var i = 0; i < height; i++) {
var line = this.text[i] || "";
result.push(line + repeat(" ", width - line.length));
}
return result;
};
function RTextCell(text) {
TextCell.call(this, text);
}
RTextCell.prototype = Object.create(TextCell.prototype);
RTextCell.prototype.draw = function(width, height) {
var result = [];
for (var i = 0; i < height; i++) {
var line = this.text[i] || "";
result.push(repeat(" ", width - line.length) + line);
}
return result;
};
当我console.log(RTextCell.prototype)时,我得到了仅具有draw函数的原型。另外,当我登录(Object.create(Textcell.prototype))时,我只会得到“ TextCell {}”。为什么看起来原型的副本是空的?
编辑:我注意到我的错误。在定义它之前,我创建了RTextCell类型的对象。这就是为什么原型变成空的原因。对不起,这里不包括那部分
最佳答案
为什么看起来原型的副本是空的?
因为它没有自己的属性。继承的属性不会直接显示在控制台中,但是在扩展对象时,您可以遵循原型链。