Нет,
Имея это объявление Person
, каждый раз, когда вы создаете его новый "экземпляр", запускается "конструктор", и вы создаете совершенно новую функцию scream
(замыкание), на которую у вас нет ссылок. до, кроме только что созданного объекта, steve.scream
, то есть.
В качестве альтернативы вы можете сделать это так:
function Person(){}
Person.prototype.scream = function(){
alert('NO NO NO!!!!');
}
var steve = new Person();
steve.scream() // NO NO NO!!!!
Person.prototype.scream = function(){
alert('YES YES YES!!!!');
}
steve.scream() // this time is YES YES YES!!!!
В этом случае начальный scream
«метод» доступен только в одном месте на прототипе, и вы можете перезаписать его для всех «экземпляров».