我在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类型的对象。这就是为什么原型变成空的原因。对不起,这里不包括那部分

最佳答案

为什么看起来原型的副本是空的?


因为它没有自己的属性。继承的属性不会直接显示在控制台中,但是在扩展对象时,您可以遵循原型链。

08-19 06:42