Это ожидаемое поведение свойства Javascript Prototype? - PullRequest
4 голосов
/ 02 апреля 2011
function math() { return 'x' } 

math.prototype.sqrt = function(a){return Math.sqrt(a)} 

var x = new math(); 
x.sqrt(9); //gives 3

function math1() { return {} } 

math1.prototype.sqrt = function(a){return Math.sqrt(a)} 

var y = new math1(); 
y.sqrt(9); //throws javascript error "TypeError: Object #<Object> has no method 'sqrt'"

1 Ответ

4 голосов
/ 02 апреля 2011

Обычно ничего не может быть достигнуто возвращением значения из конструктора. Кажется, что если примитив JavaScript, такой как число или строка, будет возвращен, процесс создания объекта с new (var y = new math1();) будет работать, как и следовало ожидать, игнорируя это значение.

Однако кажется, что если вы возвращаете объект JavaScript, такой как {}, процесс создания экземпляра с new работает не так. Вместо этого ваша переменная y загружается с объектом, возвращенным не с новым экземпляром math1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...