Javascript 为什么2.ceil()抛出异常,而2.3.ceil()在prototype.js中返回3?

Javascript 为什么2.ceil()抛出异常,而2.3.ceil()在prototype.js中返回3?,javascript,prototypejs,Javascript,Prototypejs,为了让它更通用。。。通过这样做,我改变了Javascript中Number对象的原型 Number.prototype.ceil = function() { return Math.ceil(this); }; 现在2.3.ceil()返回3,2.ceil()抛出异常。 但是如果我先做b=2,然后再做b.ceil(),它就可以正常工作了!!因此,基本上这仍然是javascript的问题。2.ceil()看起来可能是语法错误。(解释器可能会对点感到困惑——它会尝试将点解释为数字的一部分。)

为了让它更通用。。。通过这样做,我改变了Javascript中Number对象的原型

Number.prototype.ceil = function() { return Math.ceil(this); }; 
现在2.3.ceil()返回3,2.ceil()抛出异常。 但是如果我先做b=2,然后再做b.ceil(),它就可以正常工作了!!因此,基本上这仍然是javascript的问题。

2.ceil()
看起来可能是语法错误。(解释器可能会对点感到困惑——它会尝试将点解释为数字的一部分。)

查看
2..ceil()
(注意双点)或
(2).ceil()
是否适合您。

2.ceil()
看起来可能是语法错误。(解释器可能会对点感到困惑——它会尝试将点解释为数字的一部分。)


查看
2..ceil()
(注意双点)或
(2).ceil()
是否适合您。

方法是
Math.ceil
,它不是实例方法

var b = 2;
console.log(Math.ceil(b));

b = 2.3;
console.log(Math.ceil(b));
创建一个原型方法来实现这一点看起来很简单:

Number.prototype.ceil = function() {
    return Math.ceil(this);
};

console.log(2.3.ceil());
看起来JavaScript还保留了数字文本中的第一个小数,用于向数字中添加小数。这是一种语言特征。要解决此问题,您需要两个小数:

2.ceil(); // does not work
2.3.ceil(); // does work
2..ceil(); // does work

方法是
Math.ceil
,它不是实例方法

var b = 2;
console.log(Math.ceil(b));

b = 2.3;
console.log(Math.ceil(b));
创建一个原型方法来实现这一点看起来很简单:

Number.prototype.ceil = function() {
    return Math.ceil(this);
};

console.log(2.3.ceil());
看起来JavaScript还保留了数字文本中的第一个小数,用于向数字中添加小数。这是一种语言特征。要解决此问题,您需要两个小数:

2.ceil(); // does not work
2.3.ceil(); // does work
2..ceil(); // does work

除非您有某种框架或其他东西将.ceil()作为一种方法进行原型化,否则您不应该做这些事情,在这种情况下,它可能将其作为字符串上的方法进行原型化。ceil()不是本机javascript方法

Javascript的本机“round up”方法.ceil()通过使用数学对象(如

alert(Math.ceil(2.3));

除非您有某种框架或其他东西将.ceil()作为一种方法进行原型化,否则您不应该做这些事情,在这种情况下,它可能将其作为字符串上的方法进行原型化。ceil()不是本机javascript方法

Javascript的本机“round up”方法.ceil()通过使用数学对象(如

alert(Math.ceil(2.3));


好吧,这不是Javascript,除非你在用原型做一些古怪的事情。如果我想
ceil
一个数字,我会这样做:
Math.ceil(x)
是的,你是对的……这是我的错。@Narendra。。。ceil()不是Number对象的内置函数。您必须使用第三方库将此功能修补到数字类型上。我怀疑您使用的是
prototype.js
。让我们知道。
>2.3.ceil()
类型错误:对象2.3没有方法“ceil”我的错误…我使用的是一个使用prototype.js的页面的chrome控制台…看起来这是他们的code.AFAIK中的一个bug,它不是Javascript,除非你用prototype做了一些奇怪的事情。如果我想
ceil
一个数字,我会这样做:
Math.ceil(x)
是的,你是对的……这是我的错。@Narendra。。。ceil()不是Number对象的内置函数。您必须使用第三方库将此功能修补到数字类型上。我怀疑您使用的是
prototype.js
。让我们知道。
>2.3.ceil()
类型错误:对象2.3没有方法“ceil”我的错误…我使用的是一个使用prototype.js的页面的chrome控制台…看起来这是他们代码中的一个bug。我怀疑OP对原型做了一些奇怪的事情。事实上Prototype.js提供了这样一个功能:他们为什么要这么做?这既令人困惑又毫无意义。可能是,但问题应该被适当地标记;)我现在更改了标记以反映prototype.js中的问题。。。谢谢你的指点!但是在做了这个数字之后,仍然存在这个错误行为。prototype.ceil=function(){return Math.ceil(this);};现在2.3.ceil()返回3,2.ceil()抛出异常。但如果我执行b=2,然后执行b.ceil(),它就可以正常工作了!!所以,基本上这仍然是javascript的问题。我怀疑OP对原型做了一些奇怪的事情。事实上Prototype.js提供了这样一个功能:他们为什么要这么做?这既令人困惑又毫无意义。可能是,但问题应该被适当地标记;)我现在更改了标记以反映prototype.js中的问题。。。谢谢你的指点!但是在做了这个数字之后,仍然存在这个错误行为。prototype.ceil=function(){return Math.ceil(this);};现在2.3.ceil()返回3,2.ceil()抛出异常。但如果我执行b=2,然后执行b.ceil(),它就可以正常工作了!!因此,基本上这仍然是javascript的问题。Nope(2)。ceil()也不起作用。顺便说一句,我使用chrome控制台来检查这一点。但是2.3.ceil()会像预期的那样返回3。@Downvoter:你可能不喜欢
ceil
是一个实例方法,但在他的情况下它是(或者
2.3.ceil()
也会失败)。@Narendra:你确定吗?尝试2.4.ceil()并查看它是否返回3或4。这是prototype.js的意外行为…我现在编辑了问题以正确反映它。
2..ceil()
(2).ceil()
在Chrome控制台中对我都有效,只要有
编号.prototype.ceil
。Nope(2).ceil()也不起作用。顺便说一句,我使用chrome控制台来检查这一点。但是2.3.ceil()会像预期的那样返回3。@Downvoter:你可能不喜欢
ceil
是一个实例方法,但在他的情况下它是(或者
2.3.ceil()
也会失败)。@Narendra:你确定吗?尝试2.4.ceil()并查看它是否返回3或4。这是prototype.js的意外行为…我现在编辑了问题以正确反映它。
2..ceil()
(2).ceil()
在Chrome控制台中都适用,只要有
Number.prototype.ceil
。请参阅。至少有一个流行的框架可以做到这一点,但这样做之后仍然存在这种错误行为