为什么“String.prototype = {}”不起作用?

时间:2011-12-23 08:48:46

标签: javascript string prototype-programming

我在javascript中编写了这段代码:

String.prototype = {
  a : function() {
    alert('a');
  }
};

var s = "s";
s.a();

我希望它会提醒a,但会报告:

s.a is not a function

为什么?

2 个答案:

答案 0 :(得分:10)

您似乎正在用您的对象替换prototype整个 String对象。我怀疑这甚至会起作用,更别说是你的意图了。

prototype属性不可写,因此该属性的分配将无声地失败( @FrédéricHamidi)。

使用常规语法有效:

String.prototype.a = function() {
  alert('a');
};

var s = "s";
s.a();

答案 1 :(得分:4)

你必须这样写:

String.prototype.a = function(){
alert("a");
};

var s = "s";
s.a();

小提琴:http://jsfiddle.net/PNLxb/