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

Javascript 要将原型分配给数字,我应该使用Function.prototype还是Object.prototype?,javascript,Javascript,我想用一个新函数扩展“Number”类型,因此我必须定义一个原型。当我想到这一点时,我会有一大堆问题: 数字是否同时从Object.prototype和Function.prototype继承 “数字”是“对象”还是“函数” 什么时候我应该定义一个对象作为数字的原型?这有意义吗 Number本身是一个普通函数。 可以直接为其指定属性 如果要扩展number实例,应将number方法指定给number.prototypenumber中已经包含了number方法。prototype要添加自己的方法,

我想用一个新函数扩展“Number”类型,因此我必须定义一个原型。当我想到这一点时,我会有一大堆问题:

  • 数字是否同时从Object.prototype和Function.prototype继承
  • “数字”是“对象”还是“函数”
  • 什么时候我应该定义一个对象作为数字的原型?这有意义吗

  • Number
    本身是一个普通函数。
    可以直接为其指定属性


    如果要扩展number实例,应将number方法指定给
    number.prototype

    number中已经包含了number方法。prototype要添加自己的方法,只需执行以下操作:

    Number.prototype.addOne = function(){
    return this.valueOf() + 1;
    };
    
    1..addOne() // 2
    
    你的问题让我困惑,因为我不确定你所说的数字是指数字构造函数,它只是一个普通函数还是数字原语


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

    我不明白你的问题。如果我真的认为猴子补丁
    Number
    是个好主意,我会:

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

    1-对
    Number instanceof Object
    也返回true
    Function instanceof Object
    返回true。所以Number拥有对象和函数拥有的所有方法

    2-数字是一个函数<代码>数字类型返回“函数”

    3-如果你想给Number的原型添加一个方法,只需使用

    Number.prototype.METHOD_NAME = function() { // your logic } Number.prototype.METHOD_NAME=函数(){ //你的逻辑 }
    然后可以对所有数字调用方法,如
    1..method\u NAME()

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

    1。不,2。不,3。数字已经有了一个原型,4。我猜数字是一个内置的普通函数。以“Number”作为原型的其他功能有哪些?“数字文字”的原型是什么?嗯?我不知道你在问什么。让我再试一次。如果我执行Number.prototype.addOne=函数(n){返回这个.valueOf()+1;},我想1.addOne()是有效的,而“1.addOne()是无效的。对吗?如果上述理解是正确的,我的问题是,一种类型如何继承addOne,而另一种则不正确
    “1”
    是一个
    字符串
    1。addOne()
    是一个语法错误,因为点是小数点而不是属性访问。解决方法:
    1..addOne()
    1.addOne()
    (1).addOne()
    Esailija:你的答案部分回答了我的问题。将为对象或对象子集找到“.addOne”(我猜是“1”。.addOne()将不起作用)。如果是对象的子集,我的问题是Number.prototype如何映射到该子集。它将仅在Number对象上找到。而
    1..addOne()//2
    起作用,这就是为什么我的答案中会出现这种情况
    1.addOne()
    是一个语法错误,因为点是小数点而不是属性。为了完成回答,它只适用于数字原语,因为这是一个为数字原语创建包装类的通用构造函数。对于对象、字符串、数组等,有三种是特定的通用构造,即对象、字符串、,Array@RajkumarMasaniayan你是什么意思?我只谈了代码和我的答案。如果您有一些代码符合您所描述的,请将其编辑到您的问题中:PIt对于理解彼此是如此具有挑战性,不是吗?:-)。当我问最初的问题时,我没有意识到不同类型的物体。因此,我回答了我自己关于addOne如何识别函数对象的问题(在本例中是为1创建的包装器类)。我是说“1”继承自String.prototype,而不是Number.prototype,因此“Esailija说的是真的”。如果我仍然不清楚,我就放弃。