是否有名称用于描述您在Javascript中定义对象的不同方法?
这种方法更像“类似”:
function MyObject() {
this.aMethod= new function(){
};
this.anotherMethod = new function(){
};
}
另一种更“动态”的技术。
MyObject = new Object();
MyObject.aMethod= new function(){
};
MyObject.anotherMethod = new function(){
};
我一直在以各种方式使用这两种技术,我理解每种技术的好处,但对于我的生活,我不知道如何在与colleauges讨论这两种技术时使用这两种技术。 / p>
这些技术有名字吗?
答案 0 :(得分:3)
在第一种情况下,MyObject
是构造函数,因为它应该使用new
调用:
var obj = new MyObject();
在第二种情况下,MyObject
只是一个对象,您可以为其指定属性。它没有特殊名称。
请注意,在这两种情况下MyObject
都有不同的值。第二种情况下的MyObject
相当于obj
。
第三种方法是使用对象initilizer或“object literal”:
var obj = {
aMethod: function(){},
anotherMethod: function(){}
};
答案 1 :(得分:2)
您的第一个示例是对象构造函数,而第二个示例只是将公共方法作为属性添加到对象。作为旁注,对于更“类似”的行为,请查看module pattern:
var MyObject = (function() {
var privateStaticVariable = 0;
var my = function() {
var self = this;
var privateInstanceVariable = 0;
function privateInstanceMethod() {
}
self.publicInstanceVariable = 0;
self.publicInstanceMethod = function() {
};
};
function privateStaticMethod() {
};
return my;
});