Javascript 这个代码有什么问题?我无法扩展数字对象

Javascript 这个代码有什么问题?我无法扩展数字对象,javascript,Javascript,我试图使用prototype扩展数字。错误的部分: Number.prototype.xx = function(){ alert("hi"); } 5.xx(); 这会导致语法错误,因为点是数字文字符号的一部分,事实上,小数部分不是必需的,例如,var a=5是有效的数字文字 尝试: 相关的: 错误的部分: Number.prototype.xx = function(){ alert("hi"); } 5.xx(); 这会导致语法错误,因为点是数字文字符号的一部分,事实上,小

我试图使用prototype扩展数字。

错误的部分:


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

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

尝试:

相关的:

    • 错误的部分:

      
      Number.prototype.xx = function(){
      alert("hi");
      }
      
      5.xx();
      
      这会导致语法错误,因为点是数字文字符号的一部分,事实上,小数部分不是必需的,例如,
      var a=5是有效的数字文字

      尝试:

      相关的:


      这将起作用。这是JS解析器中的一个缺陷

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

      您可以在

      中阅读JavaScript编程语言的这一部分和其他奇怪部分,这将起作用。这是JS解析器中的一个缺陷

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

      您可以在

      中了解JavaScript编程语言的这一部分和其他奇怪的部分。问题是JavaScript语法有点奇怪。以浏览器支持的方式扩展Number原型没有什么错(扩展本机类型的固有问题除外)

      问题是,紧跟在数字文字之后的任何
      都被视为小数点。因此它看到
      5.
      并期望一个十进制数,然后在看到
      xx
      时抛出。您需要为此使用一种可选语法

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

      问题在于Javascript语法有点古怪。以浏览器支持的方式扩展Number原型没有什么错(扩展本机类型的固有问题除外)

      问题是,紧跟在数字文字之后的任何
      都被视为小数点。因此它看到
      5.
      并期望一个十进制数,然后在看到
      xx
      时抛出。您需要为此使用一种可选语法

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

      这两种方法都有效(考虑到上面的xx函数):


      这两种方法都有效(考虑到上面的xx函数):


      可能是一个bug,但它是ECMA标准的一部分。确实可能不是一个bug,但我肯定会认为它是一个缺陷。可能是一个bug,但它是ECMA标准的一部分。确实可能不是一个bug,但我肯定会认为它是一个缺陷。扩展本机类型的固有问题是什么?扩展本机类型的固有问题是什么?