JS中创建对象的几种常用方法

字数 474阅读 5852

JS的语法非常灵活,简单的对象创建就有好几种不同的方法。这些过于灵活的地方有时候确实很让人迷惑,那么今天我们就来梳理一下JS中常用的创建对象的几种方法吧。

1. 简单对象字面量

这是最简单的创建对象的方法,也是经常在入门书籍中看到的方法:

//创建一个简单对象字面量
var person = {};    

// 加入属性和方法
person.name = 'ifcode';
person.setName = function(theName) {
   person.name = theName;
}

非常简单,但一般情况下不推荐这种方法。JS good parts书中认为这种写法可读性不够强,作者推荐的是后面一种写法。

2. 嵌套对象字面量

JS good parts中推荐这种写法:

var person = {
    name: 'ifcode',
    setName: function(theName) {
        this.name = theName;
    }
}

这种写法可读性很强,person对象的所有属性和方法都包含在其身体内,先的一目了然。

以上两种写法适用于只存在一个实例的对象,也就是某种意义上的singlton pattern

下面介绍的几种方法比较适用于创建多个对象实例。

3. 简单构造函数

构造函数一般都符合factory pattern,根据默认的规则,构造函数应当首字母大写:

Person = function(defaultName) {
    this.name = defaultName;
    this.setName = function(theName) {
        this.name = theName;
    }
}

person = new Person('ifcode');

利用构造函数就可以方便地创建多个对象实例了。

4. 使用原型(prototype)的构造函数

这里简单回顾一下prototype的作用。prototype或许是某种意义上最接近传统OOP中class的东西了。所有创建在prototype上得属性和方法,都将被所有对象实例分享。

Person = function(defaultName) {
    this.name = defaultName;
}

Person.prototype.setName = function(theName) {
    this.name = theName;
}

其实创建对象的方法还有很多,这些过于灵活的方法也是许多人在初接触JS时感到困惑的原因。我个人比较偏向2和4:单一实例用2,多个实例用4。

推荐阅读更多精彩内容