要将原型分配给Number,我应该使用Function.prototype还是Object.prototype?

时间:2011-12-16 01:16:11

标签: javascript

我想用新函数扩展类型'Number',因此我必须定义一个原型。当我想到这一点时,我得到了一堆问题:

  1. Number是否继承Object.prototype以及Function.prototype?
  2. 'Number'是'对象'还是'功能'?
  3. 我应该何时将对象定义为Number的原型?它有意义吗?

5 个答案:

答案 0 :(得分:3)

1-真。 Number instanceof Object返回true,Function instanceof Object也返回true。因此Number具有Object和Function所具有的所有方法。

2-数字是一个功能。 typeof Number返回“function”。

3-如果要为Number的原型添加方法,只需使用

Number.prototype.METHOD_NAME = function() {
    // your logic
}

然后,您可以在1..METHOD_NAME()

等所有数字上调用您的方法

答案 1 :(得分:2)

数字方法已经包含在Number.prototype中,只需添加自己的方法:

Number.prototype.addOne = function(){
return this.valueOf() + 1;
};

1..addOne() // 2

你的问题让我感到困惑,因为我不确定数字是指数字构造函数,它只是一个普通的函数或数字原语。

数字基元不是对象,因此不会继承任何内容,当您1..addOne()将数字转换为对象,然后在.addOne中找到Number.prototype时调用this设置为数字的对象形式。

答案 2 :(得分:1)

Number本身就是一个普通的功能 您可以直接为其指定属性。

如果您想扩展号码实例,则应指定给Number.prototype

答案 3 :(得分:1)

我不明白你的问题。如果我真的认为猴子修补Number是一个好主意,我只会这样做:

Number.prototype.newfunc = function(...) { ... }

答案 4 :(得分:0)

Number,Function和Object都是通用构造函数。 Number继承自Function,而Function又继承自Object。数字构造函数应该用于数字原语来创建包装器对象并调用相关的函数。