是不是......
var obj = new Object(); obj.function1 = function(){ //code }
或类似的东西?
您可以从答案中看到,您已经有多种方式.
#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将方法添加到原型中的事实并不重要.(不考虑克隆)
还有更多方法可以使用具有闭包的工厂或向函数或私有嵌套函数添加"静态"属性/方法来向对象添加方法... :)
var newObj = { met1 : function () { alert('hello'); } };
然后,可以像这样调用该方法:
newObj.met1();
顺便说一句,在声明一个新对象时,使用object literal({}
),而不是new Object()
构造函数.
一般使用prototype属性:
function YourObject() { // } YourObject.prototype.yourMethod= function() { // }
我还没有看到有人提到的一件事是为什么你可能想要使用该prototype
属性,比如对象 - 文字符号:这样做可以确保函数定义在从函数原型创建的对象的所有实例中共享,而不是每次实例化一次.