原型

原型構造對象

原型構造對象的方式是從一個具體到具體的過程,即是會利用一個現有的對象爲原型去構建另一個對象。

原型對象—->對象

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章