javascript - 将原型(prototype)附加到 JavaScript 对象

标签 javascript json prototype prototypal-inheritance

假设我有以下带有人员对象的 JSON。

[
  {
     "name": "Alice",
     "age": 28,
  },
  {
     "name": "Bob",
     "age": 33
  }
]

如果我解析它,我将得到一个包含两个 JavaScript 对象的数组。 比方说,我想为这两个对象配备一个名为 introduce 的方法,它会做类似这样的事情

function introduce() {
  return "My name is " + this.name + " and I am " + this.age + " years old.";
}

现在,我可以遍历我的两个人并调用

person.constructor.prototype.introduce = introduce

但是,这将在所有 JavaScript 对象中公开 introduce 函数,而不仅仅是上面的两个。

我也可以手动将函数附加到每个对象,但是如果我想用额外的函数扩展我的人,我将不得不再次迭代所有的人。

理想情况下,我想要一个可以适应 introduce 方法的原型(prototype),然后将这个原型(prototype)附加到我所有的人身上,所以如果我以后扩展原型(prototype),我的人将获得额外的功能作为好吧。

问题是:如何?

最佳答案

我建议你创建一个类:

JSBin

var Person = (function () {
    function Person(person) {
        this.person = person;
        this.name = person.name;
        this.age = person.age;
    }
    Person.prototype.introduce = function () {
        return "My name is " + this.name + " and I am " + this.age + " years old.";
    };
    return Person;
})();

关于javascript - 将原型(prototype)附加到 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23135637/

相关文章:

javascript - 如何在 Bootstrap 弹出窗口中设置文本框值

javascript - 可以将一个构造函数的原型(prototype)分配给另一个构造函数吗?

javascript - 定义 Javascript 类原型(prototype)方法

Javascript 分配原型(prototype)困惑

javascript - 返回多个对象之一 javascript

javascript - 无法在 MooTools 中以编程方式触发 mouseenter

json - 使用 if/then 的正则表达式前瞻非捕获

PHP & MYSQL : Get all columns, 从行中选择 * 并对结果进行 json 编码

javascript - 将 JSON 对象发布到 iFrame

javascript - if 语句和 vuejs 重启计数器的错误