创建对象的几种方式

159 阅读1分钟

创建对象有四种方式,如下。

字面量/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是实例对象。实例对象和原型对象通过原型链连接。