繁体   English   中英

无法在Number上调用声明的原型,而String在JavaScript中工作

[英]Unable to call the declared prototype on Number while String works in JavaScript

我已经宣布了两种方法。

String.prototype.hazaa = function (shazoo) {
  return this + shazoo;
}

Number.prototype.hazaa = function (shazoo) {
  return this + shazoo;
}

当我打电话给前者时,我得到了预期的行为。 但是,调用第二个,会产生以下错误。

语法错误:意外的令牌ILLEGAL(...)

我觉得这是我的C#-ishness令人讨厌(我正在考虑扩展方法和面向对象的调用)。 调用的执行如下。

"abc".hazaa("shazoo");
12345.hazaa(00000000);

还有另一种语法可以调用我添加的函数吗? 我没有以正确的方式宣布原型添加吗?

是的,我已经进行了研究,但我可能错过了一个相关的观点。

问题在于解析12345.hazaa(00000000); ,它认为hazaa在数字的小数点后面,因此意外的令牌。 如果将数字包装在括号中,则会对其进行解析并正确执行:

(12345).hazaa(00000000);

它将继续在变量上正常工作,因为解析已经发生:

var a = 123;
a.hazaa(0000);

正如Jaromanda X在评论中所提到的,允许正确解析的另一种方法是使用双点语法:

12345..hazaa(00000000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM