有没有办法将方法添加到众多对象的原型中

时间:2018-06-19 20:01:01

标签: javascript

让我说我有100个物体

var a={name:'a'};
var b={name:'b'};
...
...
var xyz={name:'xyz'};

现在,我想向所有这些对象添加一个方法,该方法将对所有对象执行类似的操作,比方说显示属性“名称”。如何为所有这些对象的Object.prototype添加方法。

3 个答案:

答案 0 :(得分:1)

您可以通过为所有对象创建一个类并为该对象添加原型方法(为什么不使用类方法,answer)来实现相同的目的。

以下是与每个问题相同的示例-

Welcome to Blackjack

答案 1 :(得分:0)

您可以像这样为一组对象创建一个“模板”:

function myObj() {
  this.name = arguments[0];
};

在“模板”(myObj)上方的代码中,只是一个JavaScript N function的JavaScript arguments(可以实现其他替代方法)。

现在,为了创建使用此“模板”的对象,您只需要像这样实例化它们:

var a = new myObj('a');

请参见下面的示例。

function myObj() {
  this.name = arguments[0];
};

var a = new myObj('a');
var b = new myObj('b');
var xyz = new myObj('xyz');

console.log(a.name);
console.log(b.name);
console.log(xyz.name);

答案 2 :(得分:0)

使用Object.create(),您可以创建自己的“原型”,然后使用它来创建所有对象。

let myProto = {
  func() {
    return this.name;
  }
}

let a = Object.create(myProto);
a.name = 'a';

// or using Object.assign()
let b = Object.assign({name: 'b'}, myProto);

// Object.create assigns to __proto__
console.log(a.__proto__);

// Object.assign doesn't, it assigns as a member function
console.log(b.__proto__);
console.log(b.func);

console.log(a.func())
console.log(b.func())