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。
网友评论