0
var Foo = (function() {
var cls = function() {
this.prototype = {
sayhi: function() {
alert('hi');
}
};
};
cls.staticMethod = function() {};
return cls;
})();
var f = new Foo();
Почему я не могу получить доступ к моему методу sayhi
? Не this
относится к переменной cls
?Доступ к прототипу метода на переменном экземпляре
Хороший ответ. Знаете ли вы, что мне не хватает здесь http://jsfiddle.net/6Wqsm/3/? Вывод: 'cls {}, cls {sayhi: function}', но не оба используют один и тот же прототип и поэтому должны делиться функцией 'sayhi'? –
Нет, потому что прототип перезаписывается новым объектом каждый раз, когда вы вызываете 'cls'. Установка прототипа внутри конструктора вызовет всевозможные проблемы. Например, попробуйте 'window.f instanceof foo' в вашем примере - он вернет' false'. –
О, я не думал о перезаписываемой части. Спасибо. –