1. 程式人生 > >[js]js設計模式-原型模式

[js]js設計模式-原型模式

gpo create con 數據 cto _proto_ 沒有 prot src

技術分享圖片

構造函數模型- 對象的屬性和方法每人一份

function createJs(name, age) {
    this.name = name;
    this.age = age;
    this.writeJs = function () {
        console.log(this.name, this.age)
    }
}

p1 = new createJs("maotai", 22);
p1.writeJs();
p2 = new createJs("maotai2", 23);
p2.writeJs();

console.log(p1.writeJs===p2.writeJs);

原型模式- 對象的方法所有人共享一份

function createJs(name, age) {
    this.name = name;
    this.age = age;

}

createJs.prototype.writeJs = function () { //這個方法被所有對象共享
    console.log(this.name, this.age)
};

p1 = new createJs("maotai", 22);
p1.writeJs();
p2 = new createJs("maotai2", 23);
p2.writeJs();

console.log(p1.writeJs === p2.writeJs); //true



## 小結
類是函數, 函數有prototype
實例都是對象, 對象有__proto__屬性
/*
*
* 1.每個函數數據類型(普通函數  類)都有個prototype屬性,這個屬性是一個對象數據類型的值
* 2.prototype上的瀏覽器天生給他加上了個constructor(構造函數),屬性只是類本身
*     類:prototype
*         constructor
*         __proto__
* 3.每個對象都有__proto__屬性
* 4.對象的__proto__指向所屬類的原型
* 5.object原型上沒有__proto__
* */

[js]js設計模式-原型模式