为什么“String.prototype ={}“;赢得了# 39;t工作

Why "String.prototype={}" won't work?

本文关键字:工作 prototype 为什么 String      更新时间:2023-09-26

我用javascript写了下面的代码:

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

我希望它警报一个a,但它报告:

s.a is not a function

为什么?

您似乎正在用您的对象替换String整个 prototype对象。我怀疑那根本行不通,更不用说你的意图了。

prototype属性是不可写的,所以对该属性的赋值会无声地失败(@ fracemodrhamidi )

使用常规语法也可以:

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

你必须这样写:

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

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