使用javascript"原型"在书签中。我需要一个图书馆吗?

时间:2015-09-14 22:51:50

标签: javascript prototype bookmarklet

我试图使用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。在声明原型函数或函数语句时,在结束}后需要使用分号。

1 个答案:

答案 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+'"');})()