哪个是更好的Javascript对象模式

Mar*_*son 6 javascript object

哪个是更好的Javascript对象模式......

function dog(name) {
  this.name = name;
  this.getName = function() {
    return this.name;
  };
};
Run Code Online (Sandbox Code Playgroud)

要么

function cat(name) {
  this.name = name;
};
cat.prototype.getName = function() {
  return this.name;
};
Run Code Online (Sandbox Code Playgroud)

为什么?

-----编辑

一个或另一个使用更多内存吗?

是一个或多或少"CPU"密集比另一个?

哪个更易于维护?

哪个更具可扩展性?

哪个更具可读性?

Ric*_*asi 7

除了偏好,第二个例子是"正确的".在第一个中,您getName将为每个对象创建一个新函数.在2中,使用此构造函数创建的所有对象将共享原型/ getName.在一个地方更改它,它将为每个实例更改.

在特殊场合(如复杂的继承链),您可能需要使用第一个,但要注意它的缺点.

这篇博文可能会帮助您更好地理解原型继承.


Sky*_*ton 2

这里只是个人意见...但我更喜欢“狗”风格的表示法以实现长期可维护性。

所有“狗”代码都包含在狗定义中。想象一下 5 年后,“下一个人”被指示删除 hasTail 属性。无论有多少其他对象/属性/等。从现在到那时都被定义了,他会在狗的定义中找到它。

为了进行比较......想象一下 5 年后,“下一个人”被指示从“cat”中删除 hasTail 属性。他必须扫描/grep/ctl+f 动物.js 文件中的 hasTail,并希望他删除正确的文件。