我想用新函数扩展类型'Number',因此我必须定义一个原型。当我想到这一点时,我得到了一堆问题:
答案 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。数字构造函数应该用于数字原语来创建包装器对象并调用相关的函数。