對(duì)象創(chuàng)建方式
1.對(duì)象直接量
var person={
name="oBa";
sex='man';
}
[[prototype]]指向Object.prototype
2.new方法,與1類(lèi)似
var person=new Object();
person.name='oBa';
person.sex='man';
[[prototype]]指向Object.prototype
3.工廠(chǎng)方式 ,少見(jiàn)了
var createPerson = function(name,age,job){
var person = new Object();
person.name = name;
person.age = age;
person.job = job;
person.sayName = function(){
alert(person.name);
}
return person;
}
var person1 = createPerson("oBa","18","mokey");
person1.sayName(); // oBa
person1的[[prototype]]指向Object.prototype
4.構(gòu)造函數(shù)
function Person(name,age,job){
this.name = name;
this.age = age;
this.job = job;
};
Person.prototype.sayName = function(){
alert(this.name);
};
var person1 = new Person("oBa",18,"bape");
person1.sayName();
person1的[[prototype]]指向Person.prototype,
Person.prototype的[[prototype]]指向Object.prototype,
這里面多了一層,有new就是不一樣
5.由Object.create()方法創(chuàng)建//es5
var person={
name="oBa";
sex='man';
}
var person1=Object.create(person);
person1的[[prototype]]指向person
Object.create()內(nèi)部大概原理:
Object.create=function(p){
function F(){};
F.prototype=p;
return new F();
}
.proto===.constructor.prototype不一定正確
例如一個(gè)對(duì)象通過(guò)Object.create()創(chuàng)建,則不成立