1. 程式人生 > >javascript new

javascript new

先上個例子程式碼:

 

function Animal(name, sex) {
    this.name = name;
    this.sex = sex;
}
Animal.color = "black";

Animal.prototype.heartBeat = true;
Animal.prototype.say = function () {
    console.log("My name is: " + this.name);
};

var cat = new Animal("cat", "female");

console.log("cat color:  " + cat.color);
console.log("cat heartBeat:  " + cat.heartBeat);
console.log("cat sex:  " + cat.sex);

console.log("animal color:  " + Animal.color);
console.log("animal heartBeat:  " + Animal.heartBeat);
console.log("animal sex:  " + Animal.sex);

 

虛擬碼說明new都做了什麼:

 

var cat = new Animal("cat", "female")   等價於

var cat = {
    var obj = {};
    obj.__proto__ = Animal.prototype;  //這時原型繼承的關鍵,新物件的__proto__指向了函式物件的原型物件
    Animal.call(obj, "cat", "female"); //新物件具有了函式物件中的動態屬性和方法
    return obj;
}