javascript的问题"原型"在书签.我需要图书馆吗?

Trouble with javascript "prototype" in bookmark. Do I need a library?

本文关键字:quot 图书馆 问题 原型 javascript 书签      更新时间:2023-09-26

我试图使用一个Javascript "原型",就像这里所示:https://stackoverflow.com/a/17306971/606539

作为测试,我在Firefox的"Bookmarklet"中放置了以下代码。

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

当我把这段代码放到书签中,然后点击它,我得到"nothing"。我甚至没有看到第一个"警报"。代码中似乎有一些错误。通常,这可能是缺少"结束引号",或者缺少";"或"}",或者拼写错误,或者其他打字错误。

我已经检查了代码,没有发现任何问题。

如果我重新编写代码以删除"prototype",它会工作得很好:

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回答中的解释几乎是正确的,代码更正是完全正确的。这是一个很大的帮助,因为它指出了缺失的分号,给了我一些搜索的东西。之前的搜索没有发现任何有用的信息。

这个问题可以在下面的答案中描述:我们是否需要在函数声明后加一个分号?当声明原型函数或函数语句时,在结束的}后面需要一个分号。

在您的单行中,您需要在原型结束后使用分号

终止}
(function(){ Array.prototype.clear=function(){ while(this.length>0){ this.pop(); } }; var yy=[1,2,3];alert('yy=:"'+yy+'"');yy.clear();alert('yy=:"'+yy+'"');})()