我试图使用Javascript"原型"如下所示:https://stackoverflow.com/a/17306971/606539
作为测试,我在" Bookmarklet"中有以下代码:在Firefox上。
javascript:(function(){Array.prototype.clear=function(){while(this.length>0){this.pop();}}var yy=[1,2,3];alert('yy=:"'+yy+'"');yy.clear();alert('yy=:"'+yy+'"');})()
为便于阅读而格式化,它看起来像这样:
javascript:
(function(){
Array.prototype.clear=function(){
while(this.length>0){
this.pop();
}
}
var yy=[1,2,3];
alert('yy=:"'+yy+'"');
yy.clear();
alert('yy=:"'+yy+'"');
}
)()
当我将此代码放入书签中然后单击它时,我得到了什么"没有"。我甚至看不到第一个"警报"。看起来代码中有一些错误。通常情况下,这将是一个缺失的"收尾报价标记",或者缺少&#34 ;;"或"}",或拼写错误或其他拼写错误。
我检查了代码,但我没有发现任何错误。
如果我重新编写代码以删除"原型",它可以正常工作:
javascript:
(function(){
function aryclear(A){
while(A.length>0){
A.pop();
}
}
var yy=[1,2,3];
alert('yy=:"'+yy+'"');
aryclear(yy);
alert('yy=:"'+yy+'"');
}
)()
我有什么不对的错过吗?我需要加载一些库来实现吗?
修改:
@msarchet在答案中的解释几乎是正确的,代码修正完全正确。这是一个很大的帮助,因为它指出了缺少的分号并给了我一些东西来搜索。以前的搜索没有发现任何有用的东西。
事实证明,这个问题在答案中有所描述:Do we need a semicolon after function declaration。在声明原型函数或函数语句时,在结束}
后需要使用分号。
答案 0 :(得分:2)
在您的单行中,您需要在原型以分号结束}
之后终止
(function(){ Array.prototype.clear=function(){ while(this.length>0){ this.pop(); } }; var yy=[1,2,3];alert('yy=:"'+yy+'"');yy.clear();alert('yy=:"'+yy+'"');})()