簡體   English   中英

在所有變量上添加原型方法

[英]Add Prototype Method on all Variables

是否可以將方法添加到所有Javascript原型( Object,array,function,string,number,boolean )?

僅作為示例。 如果我想添加一個新的Prototype getter,它返回變量的類型,創建時間戳或其他內容,我該怎么做?

參考信息:與該功能的作用無關!

編輯:

我想像其他所有Prototypen函數一樣訪問函數:

myVariable.myMethod(myParam)

每個JavaScript變量要么是一個對象,要么自動裝箱到一個對象(如字符串,布爾值和數字),或者為null或未明確定義。

因此,似乎如果您想為所有這些方法添加一個方法,則可以向Object.prototype添加一個函數,它們都像Bar建議的那樣進行擴展。

Object.prototype.myMagic = function(){
    console.log("Hello");
};
"thisString".myMagic();
15.13.myMagic();
([]).myMagic();

請注意,實際上您並未在字符串的原型中添加函數,因為字符串是原始值並且沒有原型,而是在Object的原型中添加了一個方法-字符串“ box”到擴展Object並具有此方法的String實例(它們對象)。

還要注意,在ES5系統上,可以通過Object.create(null)創建擴展Object.prototype對象,在ES6中,也可以通過setPrototypeOf__proto__修改對象的原型。 但是,在這些極端情況之外,它應該可以工作。

您可以將其添加到Object.prototype 所有其他原型實例都擴展Object.prototype ,並將從那里繼承它。

Object.prototype.myMethod=function() {
   // ... whatever
};

請注意,對於“實際”代碼,不建議擴展內置原型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM