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

时间:2014-05-09 19:15:52

标签: javascript methods prototype

是否可以为所有Javascript原型添加方法(对象,数组,函数,字符串,数字,布尔)?

仅举例。 如果我想添加一个新的Prototype getter,它返回变量的类型,创建时间戳或其他东西,我该怎么办呢?

有关信息:它不是关于此功能的作用!

修改

我想像其他每个Prototypen函数一样访问函数:

myVariable.myMethod(myParam)

2 个答案:

答案 0 :(得分:4)

每个JavaScript变量都是一个对象,或者它自动装入一个对象(如字符串,布尔值和数字),或者显式为null或未定义。

所以,似乎你想要为所有这些方法添加一个方法,你可以向Object.prototype添加一个函数,它们都像Bar建议的那样扩展。

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

请注意,事实上你并没有在字符串的原型中添加函数,因为字符串是原始值并且没有原型,而是你在原型中添加了一个方法。对象 - 和字符串"框"扩展String的{​​{1}}个实例(对象)并将使用此方法。

另请注意,在ES5系统上,可以通过Object创建扩展Object.prototype的对象,在ES6中它也可以可以通过Object.create(null)setPrototypeOf修改对象原型。但是,在这些边缘情况之外,它应该有用。

答案 1 :(得分:3)

您可以将其添加到Object.prototype。所有其他原型实例都扩展Object.prototype,并将从那里继承它。

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

请注意,扩展内置原型不是“真实世界”代码的推荐做法。