1.使用字面量创建(用的比较多)
var obj = {
name:'BOSS',
age:20
}
obj.name //BOSS
复制代码
2.Object构造函数
var obj1 = new Object()
obj1.name="JHON"
obj.age = 20
obj1.name //JHON
复制代码
3.Object.create()
var obj2=Object.create(null||{})
Object.create(proto, [propertiesObject])
Object.create方法,接收一个对象作为参数。而这个参数就会是新构建出来的对象的原型对象,第二个参数为可选参数,你想要添加到新创建的对象的属性。
先说第一个参数,举个栗子:
var temp = {name:'123'}
var obj2=Object.create(temp)
那么{name:'123'}就是obj2的原型对象
obj2.__proto__== temp//true
此时,obj2.name//123
这个name属性不是obj2的而是其原型对象的,所以此时第二个参数就出场了。
var obj2=Object.create(temp,{name:{value:'小明'}})
obj2.name//小明
Object.create(proto, [propertiesObject])第一个参数接受的是一个对象,甚至是null,或者是{}都是可以的。
延伸一点
通过这个方法,我们就可以实现继承。
再举个栗子:
var test = {
name:"皮卡丘",
age:10,
hello(){
console.log('就是随便打印了一些东西',this.name)
}
}
var obj3 = Object.create(test)
obj3.hello()//皮卡丘
var obj4 = Object.create(test,{name:{value:'小智'}})
obj4.hello()//小智
如此,我们就继承了test的属性和方法,而且,我们还可以将其更改为我们需要的属性。
复制代码
4.工厂模式
function createObj(name,age){
var o = new Object()
o.name=name
o.age=age
return o
}
var obj2 = createObj('MARRY',23)
obj2.name //MARRY
复制代码
5.构造函数
function Obj(name, age){
this.name = name
this.age=age
}
var obj3 = new Obj('BoB',23)
复制代码
6.原型链方式
function ObjProperty(){}
ObjProperty.prototype.name="LINDA"
ObjProperty.prototype.age=24
var obj4= new ObjProperty()
obj4.name //LINDA
复制代码