以下两种方式,考虑到性能和用法,定义对象的格式很好:
//Object created with public members defined using this.
var object1 = function () {
var private_i = null;
this.public_j = null;
//public function
this.public_func = function () {
}
}
OR
//Object created with public members defined using return patterns.
var object2 = function () {
var private_i = null,
public_j = null,
//private function will be exposed from return statement.
_public_func = function () {
};
return {
public_func : _public_func
};
}
答案 0 :(得分:1)
两者之间的区别与继承和使用有关。您的object2
始终会创建由Object.prototype
直接支持的对象,并且不需要使用new
关键字;您的object1
创建由object1.prototype
支持的对象(由Object.prototype
支持), 需要使用new
。
在任何客观方面都不是真的“更好”,它们只是两种不同的使用JavaScript的方式,它们具有基本相同的性能。第一个是很多更常见,第二个是由JavaScript社区中一个小而有声的少数人提倡的。
object1
示例通常更像这样写:
function Object1() {
var private_i = null;
this.public_j = null;
//public function
this.public_func = function () {
};
}
请注意,此类函数中的第一个字母是大写的(通过压倒性的约定)。
如果您要使用不需要访问private_i
的函数,原型就会进入它:您可以将这些函数放在将被分配给通过{{1}创建的新对象的对象上像这样:
new Object1
您也可以将原型与function Object1() {
var private_i = null;
this.public_j = null;
//public function
this.public_func = function () {
};
}
Object1.prototype.someOtherFunction = function() {
// Doesn't use `private_i`
};
一起使用,如下所示:
object2