JavaScript - 将一种方法应用于多个对象

标签 javascript object prototype undefined

我听说过将一个函数或变量应用于多个对象的原型(prototype)方法。但不知何故它对我不起作用。我创建了许多类似这样的对象:

var item = {
  a: {
    aa: "lalala",
    ab: 1,
    something: 3
  },
  b: {
    ba: "jfjb",
    bb: 2,
    something: 4
  }
}

但是当我知道使用原型(prototype)方法

item.prototype.bob = 2;

它不起作用并显示错误

Cannot set property 'bob' of undefined"

方法相同

item.prototype.bob = function() {
   100 - this.something;
   this.something++;
}

你知道我做错了什么吗?或者是否有不同的方法将相同的变量或函数应用于多个对象?

最佳答案

您将类与对象实例混淆了。你只有一个匿名对象。 item 是实例,而不是类。

在下面的代码片段中,声明了一个类(Item,大写 i),创建了一个实例 (item),并创建了该类的原型(prototype)类被修改。然后您将看到,如果您愿意,可以在原型(prototype)上设置属性并通过实例读取它。

var Item = function() {
  a = {
    aa: "lalala",
    ab: 1,
    something: 3
  };
  b = {
    ba: "jfjb",
    bb: 2,
    something: 4
  };
}

var item = new Item();

Item.prototype.bob = 'x';

alert(item.bob);

关于JavaScript - 将一种方法应用于多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197871/

相关文章:

javascript - 通过隐藏/显示重新定位 iframe

来自带有对象的对象的 AngularJS ng-options

javascript - 了解 Object.create() 和 new SomeFunction() 之间的区别

javascript - Spider中的 "extends"关键字是什么?

javascript - 获取键值对的嵌套对象数

javascript - 更改对象的 [[Prototype]] 后,JavaScript 环境最终会恢复吗?

javascript - 在javascript中将十进制打印为二进制

javascript - RxJS - 初始状态和更新

javascript - 使用 CSS 或 JavaScript 更改 SVG 图标颜色

javascript - 通过嵌套键按对象数组进行分组