下面是我在javascript對象中添加方法的代碼。我搜查了很多,但沒有爲我工作。怎麼了??不能通過原型屬性在js對象中添加方法
<!DOCTYPE html>
<html>
<body>
<script>
var person = new Object();
person.prototype.display=function(){
alert("ok");
}
person.display();
</script>
</body>
</html>
下面是我在javascript對象中添加方法的代碼。我搜查了很多,但沒有爲我工作。怎麼了??不能通過原型屬性在js對象中添加方法
<!DOCTYPE html>
<html>
<body>
<script>
var person = new Object();
person.prototype.display=function(){
alert("ok");
}
person.display();
</script>
</body>
</html>
試試這個:
function person() {}
person.prototype.display = function(){ alert("ok"); }
var p = new person();
p.display();
編輯來解決語法錯誤。
這是工作。但爲什麼它沒有一個構造函數.. ?? – John
'function person(){}'創建一個first-class對象,而'new Object();'不會。您只能從第一個類對象訪問原型的屬性。這個解釋是更詳細的:[堆棧溢出](http://stackoverflow.com/questions/572897/how-does-javascript-prototype-work) – zigdawgydawg
非常感謝你.. – John
您不能添加屬性到undefined。
var foo = new Object();
foo.prototype; // undefined
Object.getPrototypeOf(foo); // prototype of all objects
要創建對象有它自己的原型,使用Object.create
var proto = {},
foo = Object.create(proto);
foo.prototype; // still undefined
Object.getPrototypeOf(foo) === proto; // true
或者,使用new
與虛擬功能
var Obj = function() {},
proto = Obj.prototype = {};
var foo = new Obj;
foo.prototype; // again still undefined
Object.getPrototypeOf(foo) === proto; // true
一旦你的原型從最後這兩個,你可以使用它作爲正常
proto.display = function() {console.log('display');};
foo.display();
你能幫我解釋一下我的例子嗎?我對JavaScript很感興趣,我覺得我迷失了方向。 – John
從我的答案中選擇代碼塊'2'或'3',並將'foo'重命名爲'person',然後複製代碼塊'4'並將_function_更改爲所需的操作。 –
如果您試圖在javascript中實現原型繼承,那麼'person'需要是一個函數,而不是一個對象。
這是一個很好的介紹,我認爲 - http://alexsexton.com/blog/2013/04/understanding-javascript-inheritance/。
這裏有問題嗎? – quoo
如果您只想將其添加到一個對象,則不必使用原型。 – Bergi
我知道Bergi有其他的方式,但我想這樣做,以及..任何想法..? – John