[英]Javascript: Object or Object.prototype?
我只是學習了Java語言中的原型(不是框架,而是本機功能)。 我完全理解了,至少使用了其中一種。 例:
Array.prototype.myMethod = function(){
/*do something super awesome*/
}
var a = [];
a.myMethod();
在繼續閱讀時,我看到了一個示例,其中作者通過執行以下操作向Object對象添加了subClass方法:
Object.subClass = function(hash){/*return an extended object that inherits Object's attributes*/}
目標是創建一種類似於面向對象的語言語法的方法。 由於我希望本書的作者使用原型功能定義這種方法,因此我的問題是:
為什么不使用原型?
因為如果使用了原型,則subClass
方法僅在Object
實例上可用。 例如,要調用subClass
,需要以下步驟:
Object.prototype.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };
var myInstance = new MyClass();
var mySubClassInstance = myInstance.subClass(); // only accessible on instances
因為筆者想這並沒有太大的意義subClass
返回對象的擴展實例。 目的不是創建父“類”的實例,然后從該實例返回新的子實例。 沒必要
通過在Object
正確定義它,無需先創建MyClass
實例即可創建subClass
實例:
Object.subClass = function(hash) { /* return an extended object that inherits Object's attributes */ };
function MyClass() { };
var mySubClassInstance = MyClass.subClass();
將方法直接添加到對象而不是附加到對象的原型是否更具風險? 在某些情況下,我更喜歡一種方法。
如果希望方法能夠訪問類實例(使用this
關鍵字),請使用prototype。 如果不需要this
,則將function聲明為類本身的成員,以便您可以在沒有對象的情況下調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.