Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么;String.prototype={}";韩元';不行?_Javascript_String_Prototype Programming - Fatal编程技术网

Javascript 为什么;String.prototype={}";韩元';不行?

Javascript 为什么;String.prototype={}";韩元';不行?,javascript,string,prototype-programming,Javascript,String,Prototype Programming,我用javascript编写了以下代码: String.prototype = { a : function() { alert('a'); } }; var s = "s"; s.a(); 我希望它发出警报a,但它报告: s.a is not a function 为什么?您似乎正在用您的对象替换整个原型对象。我甚至怀疑这会起作用,更不用说你的意图了 prototype属性不可写,因此对该属性的赋值会自动失败(@Frédéric Hamidi) 不过,使用常规语法是可行的

我用javascript编写了以下代码:

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

var s = "s";
s.a();
我希望它发出警报
a
,但它报告:

s.a is not a function

为什么?

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

prototype
属性不可写,因此对该属性的赋值会自动失败(@Frédéric Hamidi)

不过,使用常规语法是可行的:

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

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

你必须这样写:

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

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

fiddle:

+1,
prototype
属性是不可写的(
Object.getOwnPropertyDescriptor(字符串,“prototype”)。可写的
false
),因此对该属性的赋值会自动失败(但会在严格模式下发出噪音)。