Javascript对象定义

时间:2015-03-02 07:42:10

标签: javascript

以下两种方式,考虑到性能和用法,定义对象的格式很好:

//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 
  };

}

1 个答案:

答案 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