将原型添加到JavaScript Object Literal

Joh*_*ohn 55 javascript prototype object-literal

STORE = {
   item : function() {
  }
};
STORE.item.prototype.add = function() { alert('test 123'); };
STORE.item.add();
Run Code Online (Sandbox Code Playgroud)

我一直想弄清楚这有什么问题.为什么这不起作用?但是,当我使用以下内容时它可以工作:

STORE.item.prototype.add();
Run Code Online (Sandbox Code Playgroud)

CMS*_*CMS 81

原型对象用于构造函数,基本上是使用new运算符调用以创建新对象实例的函数.

JavaScript中的函数是第一类对象,这意味着您可以向它们添加成员并将它们视为普通对象:

var STORE = {
   item : function() {
  }
};

STORE.item.add = function() { alert('test 123'); };
STORE.item.add();
Run Code Online (Sandbox Code Playgroud)

如前所述,原型对象的典型用法是通过使用new运算符调用构造函数来实例化对象,例如:

function SomeObject() {} // a constructor function
SomeObject.prototype.someMethod = function () {};

var obj = new SomeObject();
Run Code Online (Sandbox Code Playgroud)

SomeObject的所有实例都将继承成员SomeObject.prototype,因为这些成员将通过原型链进行访问.

JavaScript中的每个函数都有一个原型对象,因为无法知道哪些函数可以用作构造函数.


Krz*_*ski 14

多年以后,当JavaScript(ES2015到货)时我们终于有了Object.setPrototypeOf()方法

const STORE = {
  item: function() {}
};


Object.setPrototypeOf(STORE.item, {
  add: function() {
    alert('test 123');
  }
})


STORE.item.add();
Run Code Online (Sandbox Code Playgroud)