[英]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.