我已经宣布了两种方法。
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);
是否有其他语法来调用我添加的功能?我没有以正确的方式宣布原型添加吗?
是的,我已经the research,但我可能会错过一个相关的观点。
答案 0 :(得分:3)
问题是在解析12345.hazaa(00000000);
时,它看到hazaa
在数字的小数点后面,因此是意外的令牌。如果将数字包装在括号中,则会对其进行解析并正确执行:
(12345).hazaa(00000000);
它将继续在变量上正常工作,因为解析已经发生:
var a = 123;
a.hazaa(0000);
正如Jaromanda X在评论中所提到的,允许正确解析的另一种方法是使用双点语法:
12345..hazaa(00000000);