当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript中为自定义对象创建方法?

如何解决《如何在JavaScript中为自定义对象创建方法?》经验,为你挑选了3个好方法。

是不是......

var obj = new Object();

obj.function1 = function(){
    //code
}

或类似的东西?



1> meouw..:

您可以从答案中看到,您已经有多种方式.

#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将方法添加到原型中的事实并不重要.(不考虑克隆)

还有更多方法可以使用具有闭包的工厂或向函数或私有嵌套函数添加"静态"属性/方法来向对象添加方法... :)


#2不起作用.请从72个upvotes的答案中删除它:-)

2> Andreas Grec..:
var newObj = {
    met1 : function () {
        alert('hello');
    }
};

然后,可以像这样调用该方法:

newObj.met1();

顺便说一句,在声明一个新对象时,使用object literal({}),而不是new Object()构造函数.


@PaulD.Waite:我认为没有逻辑差异,但是对象文字更紧凑,允许在同一语句中设置属性,并且通常是更容易接受的方式(http://stackoverflow.com/q/4597926)/1175459).
"在声明一个新对象时,使用对象文字(`{}`),而不是`new Object()`构造函数." - 为什么?

3> Christian Nu..:

一般使用prototype属性:

function YourObject()
{
    //
}

YourObject.prototype.yourMethod= function()
{
   //
}

我还没有看到有人提到的一件事是为什么你可能想要使用该prototype属性,比如对象 - 文字符号:这样做可以确保函数定义在从函数原型创建的对象的所有实例中共享,而不是每次实例化一次.


对不起,这就是我的意思,是的; 我整个早上都在编写ActionScript.:)我会纠正的.嘿,谢谢那些贬低我的人; 感谢.
推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有