原型構造對象
原型構造對象的方式是從一個具體到具體的過程,即是會利用一個現有的對象爲原型去構建另一個對象。
原型對象—->對象
JS裏面有兩種從原型對象中構建對象的方法
第一種:Object.create(proto[,propertiesObject])
----proto一個對象,作爲新創建對象的原型。這個函數會返回構建的對象
------propertiesObject對象的屬性定義
Object.create實例:
//定義原型對象
var landRover = {
name:'landRover',
start: function(){
console.log('%s start',this.logo);
},
run: function(){
console.log('%s running', this.logo);
},
stop: function(){
console.log('%s stop', this.logo);
}
}
//使用原型創建新的對象
var landWind = Object.creat(landRover);
landWind.logo = 'landWind';
var landCruiser = Object.create(landRover);
landCruiser.logo = 'landCruiser';
第二種方法:構造函數
/*function landRover(logo){
start: function(){
console.log('%s start',this.logo);
},
run: function(){
console.log('%s running',this.logo);
},
stop: function(){
console.log('%s stop', this.logo);
}
}
var landWind = new landRover();*/
//設置對象的原型---實例
function Car(logo){
this.logo = logo || 'unknown name';
}
Car.prototype = {
start: function() {
console.log('%s start', this.logo);
},
stop: function(){
console.log('%s stop', this.logo);
},
run: function(){
console.log('%s running', this.logo);
}
}
var landRover = new Car('landRover');//執行這句時,其實是有三個步驟
var landWind = new Car('landWind');
//調用方法
landRover.start();
上面的圖表面了調用構造函數新建對象時的執行步驟,第三步是函數調用方法中的apply()調用,把對象傳給了構造函數的this。
原型鏈–實例
JS中對象的屬性和方法的訪問刪除和原型鏈有關
訪問屬性時,先從本身查詢,依次向上。
修改和刪除屬性只能操作自身的屬性
hasOwnProperty()
這個方法每個對象都有,來自於Object原型
判斷一個屬性是否屬於對象自身
landRover.hasOwnProperty('serialno');//true
//這是在判斷屬性serialno是否是landRover對象自身的,是爲true,否定爲false;