创建对象有四种方式,如下。
字面量/new Object()创建对象
const obj = { //字面量创建对象。
xx: xxx,
yy: function(){}
}
const obj = new Object() //利用new Object()创建对象。
obj.xx =
obj.yy =
obj.zz = function(){}
- const obj = {}是const obj = new Object()的语法糖。
- 使用的构造函数都是Object,所以创建的对象都是Object这个类型,无法区分出多种不同类型的对象。
工厂模式创建对象
function createXxx(a, b) {
var obj = {
xx: xxx,
yy: function(){
}
}
return obj
}
const obj = createXxx(a, b)
构造函数创建对象
function Xxx(a, b){
this.a = //该属性属于构造函数对象,也属于实例化对象。
this.b =
this.fn1 = function(){ //该方法属于构造函数对象,也属于实例化对象。
}
}
Xxx.c = x //静态成员,该属性只属于构造函数对象,不属于实例化对象。
Xxx.fn2 = function() {} //静态成员,该方法只属于构造函数对象,不属于实例化对象。
Xxx.prototype.d = x //该属性属于实例化对象。
Xxx.prototype.fn3 = function() {} //该方法属于实例化对象。
const obj = new Xxx(a, b) //利用构造函数创建对象。
obj.a 可得到
obj.b 可得到
obj.fn1() 可调用
obj.c 不可以得到,为undefined
obj.fn2() 不可调用
obj.d 可得到
obj.fn3() 可调用
Object.create()
const p = {}
const obj = Object.create(p)
- Object()是构造函数,p是原型对象,obj是实例对象。实例对象和原型对象通过原型链连接。