这段代码有什么问题?我不能够延长

问题描述:

 

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

5.xx(); 
 

我试图使用原型扩展Number Number对象。这段代码有什么问题?我不能够延长

错误的部分:

5.xx(); 

这将导致一个语法错误,因为该点被视为数字文字符号的一部分,其实并不需要小数部分,例如,var a = 5.;是一个有效的数字文字。

尝试:

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

相关:

+0

奇妙是吧。感谢 –

这将工作。它是在JS解析器

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

你可以阅读有关这和JavaScript编程语言的其他古怪的部分在JS Garden

+1

可能是一个错误,但它的ECMA标准的一部分。 – Blindy

+0

事实上可能不是一个错误,但我一定会认为这是一个缺陷。 –

瑕疵的问题是JavaScript语法的一个相当古怪位。这没有什么错延伸数原型,你做浏览器是否支持它(不是扩展原生类型的固有问题等)的方式。

的问题是,一些文字作为一个小数点被处理后立即任何.。因此,它认为5.,预计一个十进制数,然后抛出了当它看到xx。您需要为此使用其中一种替代语法。

(5).xx(); 
5..xx(); 
5 .xx(); 
+1

扩展Native Type的固有问题是什么? –

+0

...或'5 ['xx']()'。 –

这两种方法就可以了(上面给出你的XX功能):

var num = 5; 
num.xx(); 

(5).xx();