Почему "String.prototype = {}" не будет работать? - PullRequest
4 голосов
/ 23 декабря 2011

Я написал этот код в JavaScript:

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

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

Я ожидаю, что это оповещение a, но он сообщает:

s.a is not a function

Почему?

Ответы [ 2 ]

10 голосов
/ 23 декабря 2011

Вы, кажется, заменяете весь prototype объект для String своим объектом.Я сомневаюсь, что это даже сработает, не говоря уже о вашем намерении.

Свойство prototype недоступно для записи, поэтому присвоения этому свойству молча завершаются неудачей ( @ Frédéric Hamidi ).

Использование обычного синтаксиса работает, хотя:

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

var s = "s";
s.a();
4 голосов
/ 23 декабря 2011

Вы должны написать как:

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

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

скрипка: http://jsfiddle.net/PNLxb/

...