STORE = {
item : function() {
}
};
STORE.item.prototype.add = function() { alert('test 123'); };
STORE.item.add();
我一直在試圖弄清楚這有什麼不對。爲什麼這不起作用?然而,它的工作原理,當我使用如下:將原型添加到JavaScript對象文字
STORE.item.prototype.add();
STORE = {
item : function() {
}
};
STORE.item.prototype.add = function() { alert('test 123'); };
STORE.item.add();
我一直在試圖弄清楚這有什麼不對。爲什麼這不起作用?然而,它的工作原理,當我使用如下:將原型添加到JavaScript對象文字
STORE.item.prototype.add();
原型對象,就是要在constructor functions使用,將使用new operator創建新的對象實例調用基本功能。在JavaScript
函數是first-class對象,這意味着你可以添加成員,對他們對待他們就像普通的物體:
var STORE = {
item : function() {
}
};
STORE.item.add = function() { alert('test 123'); };
STORE.item.add();
正如我以前說過的一個典型應用原型對象的,是當你實例一個目的是通過調用與新的操作者一個構造函數,例如:
function SomeObject() {} // a constructor function
SomeObject.prototype.someMethod = function() {};
var obj = new SomeObject();
所有SomeObject的實例將繼承SomeObject.prototype
成員,因爲那些成員將第被訪問粗糙的原型鏈。
JavaScript中的每個函數都有一個原型對象,因爲無法知道哪些函數將用作構造函數。
您可以使用JSON revivers在解析時將您的JSON轉換爲類對象。 ECMAScript的5草案已經通過在http://JSON.org/js.html
var myObject = JSON.parse(myJSONtext, reviver);
可選齊磊參數是 功能將被調用用於在 最終結果的每一個電平每 鍵和值描述的JSON2齊磊方案。每個值將由 函數的結果替換爲 。這可用於將 通用對象重構爲 僞類的實例,或將日期 字符串轉換爲Date對象。
myData = JSON.parse(text, function (key, value) {
var type;
if (value && typeof value === 'object') {
type = value.type;
if (typeof type === 'string' && typeof window[type] === 'function') {
return new (window[type])(value);
}
}
return value;
});
很高興知道這些信息。 +1。一個更詳細的例子與myJSONtext和類型的功能細節會更好,但無論如何感謝這個信息! – 2016-03-17 07:09:00
多年後,JavaScript時(ES2015到達),我們終於Object.setPrototypeOf()方法
const STORE = {
item: function() {}
};
Object.setPrototypeOf(STORE.item, {
add: function() {
alert('test 123');
}
})
STORE.item.add();
寫這篇文章,這是可以通過使用__proto__
財產。以防萬一任何人目前正在檢查,可能在將來。
const dog = {
name: 'canine',
bark: function() {
console.log('woof woof!')
}
}
const pug = {}
pug.__proto__ = dog;
pug.bark();
然而,在這種情況下,添加原型的推薦的方法是使用Object.create。所以上面的代碼將被轉換爲:
const pug = Object.create(dog)
pug.bark();
或者你也可以使用Object.setPrototypeOf作爲一個答案提及。
希望有所幫助。
非常感謝您的解釋和鏈接!現在對我來說更清楚了。 :) – John 2009-10-20 04:44:33
不客氣@約翰,很高興幫助! – CMS 2009-10-20 04:46:02
偉大的解釋!豎起大拇指!! – 2009-10-20 09:54:18