我在Chrome尝试,下面是什么不正常的原因是什么?呼叫数组函数原型
Array.prototype.ts= function() {
alert("hallo")
}
[1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0].ts(); //not ok - what is the reason?
([1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0]).ts(); //ok
我在Chrome尝试,下面是什么不正常的原因是什么?呼叫数组函数原型
Array.prototype.ts= function() {
alert("hallo")
}
[1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0].ts(); //not ok - what is the reason?
([1, 9, 8, 7, 6, 5, 3, 4, 5, 2, 0]).ts(); //ok
您在函数声明后缺少分号。这是我在我的Chrome控制台中运行的内容,我看到一切都按照它应该的方式工作。请参阅下面拨弄
Array.prototype.ts = function() { alert('test') };
[1,2,3].ts()
当我运行它:) 据我所知,你应该避免延长阵列的原型,因为它可以改变它的默认行为,他们都将被执行。 你可以写一个“普通”的功能,做同样的事情,只是检查,如果输入的参数为前一个数组开始做别的事情(Array.isArray(yourArray)),这样你就不会污染不必要的功能,任何东西。
Runthis是正确的,但我想解释一下为什么。
分号一般都不会在JavaScript有用的,但像他这样的情况说明不使用它们的风险:
一个函数的声明是有效的表达式。
的表达,随后在方括号([]
)东西也是一个有效的表达。
所以这两条线被解释为一个单一的表达,并且看起来像在第二行的阵列litteral实际上读作功能对象的无效索引。我会建议在添加一个分号开始,随着你的代码[
或(
启动(除非它意味着继续课程的前行,)任何线路的。
换句话说,你的代码被读作:
Array.prototype.ts= function() { /*…*/ }[1, 9 /* etc */].ts();