如果你這樣做(如圖小提琴)
Employee.prototype = Person.prototype;
然後Employee
將不會是Person
的子類,而是它們將成爲相同的類(儘管有兩個不同的構造函數)。
更確切地說,您添加到Employee
原型的方法和屬性對於任何Person
也都可見。請注意,OOP中的類不應以任何方式影響其超類。
Employee.prototype = Object.create(Person.prototype);
將創建一個新的對象,類似於
Employee.prototype = {};
Employee.prototype.__proto__ = Person.prototype
除了Object.create
(不像__proto__
)在所有瀏覽器上運行,或以
Employee.prototype = new Person();
除外Person
構造也可以將其他屬性設置爲Employee.prototype
而Object.create
將創建一個沒有額外屬性的對象。
在提琴無限循環發生,因爲Employee.prototype.sayHi
電話,但Employee.prototype.sayHi
是,因此呼籲本身(當你分配給Employee.prototype.sayHi
原丟失)。
如果Employee.prototype === Person.prototype
那麼,必要時,Employee.prototype.sayHi === Person.prototype.sayHi
。
這兩條線有什麼區別? –
你是不是指'Employee.prototype = Person.prototype;'(從小提琴)? –