我試圖爲什麼className.proptotype.constructor = newConstructor()不會改變Javascript類的構造函數?
className.proptotype.constructor = newConstrcutor;
更改類的構造函數此屬性現指newConstructor但是當我嘗試創建類的實例,仍執行舊的構造函數。那麼,究竟是什麼使用className.proptotype.constructor?
謝謝
我試圖爲什麼className.proptotype.constructor = newConstructor()不會改變Javascript類的構造函數?
className.proptotype.constructor = newConstrcutor;
更改類的構造函數此屬性現指newConstructor但是當我嘗試創建類的實例,仍執行舊的構造函數。那麼,究竟是什麼使用className.proptotype.constructor?
謝謝
每個構造函數都有一個指向名爲prototype的對象的指針。原型是JavaScript支持在同一類型的對象之間共享屬性和方法的主要機制。
另外,原型可以用來支持繼承;並不完全像在Java,C#等其他OO語言中完成的那樣。所以你可以想象,有一種機制允許解釋器通過一個隱含地形成的鏈從一個原型導航到另一個。以與構造函數指向原型對象相同的方式,原型也可以指向其構造函數;您可以將其視爲構造函數和原型之間的關係。
className.proptotype.constructor
屬性的用途之一是當您要調試您的代碼。一個JavaScript調試器會明確聲明一個實例的類型(它的創建構造函數)。
瞭解更多詳情,您可以閱讀本
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor
(不,它會工作再)分配時,你不能叫'newConstructor'的[ – Bergi
精確複製什麼是\'構造\ '屬性真的用於?](http://stackoverflow.com/questions/12622137/what-is-the-constructor-property-really-used-for),也許看看['new'操作符] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new)可以回答你的標題問題。 – Bergi