这个代码怎么了?我无法扩展Number对象

时间:2011-07-26 16:41:20

标签: javascript


Number.prototype.xx = function(){
alert("hi");
}

5.xx();

我正在尝试使用原型扩展Number。

4 个答案:

答案 0 :(得分:10)

错误的部分:

5.xx();

这会导致语法错误,因为该点是数字文字符号的一部分,实际上,小数部分不是必需的,例如,var a = 5.;是一个有效的数字文字。

尝试:

(5).x(); // or
5..xx();

相关:

答案 1 :(得分:5)

问题是一个相当古怪的Javascript语法。以浏览器支持的方式扩展Number原型没有任何问题(除了扩展本机类型的固有问题)。

问题是数字文字后面的任何.都被视为小数点。所以它看到5.并且期望一个十进制数,然后在看到xx时抛出。您需要使用其中一种替代语法。

(5).xx();
5..xx();
5 .xx();

答案 2 :(得分:2)

这会奏效。这是JS解析器

中的一个缺陷
5..xx()
(5).xx()

您可以在JS Garden

中了解JavaScript编程语言的这个和其他古怪部分

答案 3 :(得分:0)

这两种方法都适用(鉴于上面的xx函数):

var num = 5;
num.xx();

(5).xx();