46
A
回答
48
var newObj = {
met1 : function() {
alert('hello');
}
};
然後,該方法可以被稱爲像這樣:
newObj.met1();
順便說一句,聲明一個新對象時,使用對象文字({}
),而不是new Object()
構造函數。
13
一般採用prototype屬性:
function YourObject()
{
//
}
YourObject.prototype.yourMethod= function()
{
//
}
有一件事我還沒有看到任何人提及卻又是爲什麼你可能想通過使用prototype
屬性,比如對象的文字符號:這樣做保證了函數定義在通過函數原型創建的對象的所有實例之間共享,而不是在每個實例化一次的情況下共享。
83
你可以從答案中看出,你已經有了不止一種方法。
#1
var o = new Object();
o.method = function(){}
#2
var o = new Object();
o.prototype.method = function(){}
#3
function myObject() {
this.method = function(){}
}
var o = new myObject();
#4
function myObject() {}
myObject.prototype.method = function(){}
var o = new myObject();
#5
var o = {
method: function(){}
}
#3和#4正在使用構造函數。這意味着您可以使用它們來創建多個具有相同「類」的對象(這些類實際上並不存在於JavaScript中)
#4與#3不同,因爲所有使用#4構造的對象將共享一個相同的'方法'方法,因爲它是它們原型的一個屬性。這樣可以節省內存(但數量非常少),如果更改原型的方法,所有#4對象都會立即更新 - 即使它們已經被實例化。
#1,#2和#5幾乎都相當。這是因爲可能一次只有其中之一,所以#2將原型添加到原型的事實並不重要。 (不考慮克隆考慮)
有添加方法使用帶有封閉或添加「靜態」屬性/方法或私人嵌套函數工廠的對象仍然更多的方式... :)
1
Function.prototype.implement = function(member, value) {
this[member] = value;
return this;
}
function MyFunction() {
//...
}
(function($){
$.implement("a", "blabla")
.implement("b", function(){ /* some function */ })
.implement("c" {a:'', b:''});
})(MyFunction);
2
別擔心兄弟,這裏的代碼是:
var myObj=function(){
var value=null
this.setValue=function(strValue){
this.value=strValue;
};
this.getValue=function(){
return this.value;
};
};
你可以調用這個對象是這樣的:
var obj= new myObj();
obj.setValue("Hi!");
alert(obj.getValue());
0
您也可以執行以下操作而不是使用「Object.create()」方法。
函數調用:
com.blah.MyChildObj.prototype = createObject(com.blah.MyParentObj.prototype,
com.blah.MyChildObj);
函數定義:
function createObject(theProto, theConst) {
function x() {};
x.prototype = theProto;
x.prototype.constructor = theConst;
return new x();
}
1
隨着es6,你可以做這樣的:
var a = {
func(){
return 'The value';
}
}
document.getElementById('out').innerHTML = a.func();
<div id="out"></div>
相關問題
- 1. 如何在JavaScript中爲自定義對象創建屬性?
- 2. 如何創建一個將在JavaScript中返回自定義對象的方法
- 3. 如何使用自定義對象創建自定義對象?
- 4. 如何在javascript中創建自定義對象?
- 5. 如何在VB.NET中創建自定義對象/自定義對象列表?
- 6. 創建/填充Javascript自定義對象
- 7. OOP JavaScript - 創建自定義Div對象
- 8. 如何創建自定義添加對象到NSSet方法?
- 9. 如何爲JavaScript創建自定義數據類型的方法
- 10. 如何在JavaScript中爲json對象創建方法?
- 11. 創建自定義對象
- 12. 無法創建自定義Facebook對象
- 13. 爲wcf創建自定義對象
- 14. 創建後自定義對象爲空
- 15. 在javascript中定義對象方法
- 16. 如何爲Linq2SQL對象創建自定義獲取和設置方法
- 17. 在rails中創建自定義方法
- 18. 如何用自定義名稱創建JavaScript對象?
- 19. 在自定義對象的javascript中創建一個數組
- 20. 爲收集創建自定義方法
- 21. 如何在GraphQL中創建自定義對象列表
- 22. 如何在創建對象時從swift中自定義ObjectId
- 23. 如何在MVC中創建自定義字符串對象modelbind?
- 24. 如何在ODOO中創建自定義對象?
- 25. 如何在Java中創建對象的自定義列表?
- 26. 如何在iphone中創建自定義類的對象?
- 27. 在自定義對象中使用自定義方法
- 28. 如何在Javascript中動態創建對象及其方法?
- 29. 如何爲對象創建自定義的ReactiveMongo Reader&Writer?
- 30. 如何使用web sdk爲quickblox創建自定義對象?
呃,不,實際上這是行不通的。您可以將方法添加到某個對象的原型屬性中,然後對其進行實例化,而不是通過修改實例上名爲「prototype」的屬性來添加方法。 – Shog9 2009-02-02 20:57:14
對不起,這就是我的意思,是的;整個上午我一直在編寫ActionScript。 :)我會糾正的。嘿,謝謝誰低估了我;感謝。 – 2009-02-02 20:59:55
Jeez,去輕鬆的人們 - 這個概念是絕對正確的。 – 2009-02-02 21:02:54