Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему оператор new создает один и тот же экземпляр? (https://javascript.ru/forum/misc/39329-pochemu-operator-new-sozdaet-odin-i-tot-zhe-ehkzemplyar.html)

Shitbox2 25.06.2013 18:57

Почему оператор new создает один и тот же экземпляр?
 
A = new Obj
B = new Obj
Почему-то А и B ссылаются на один и тот же пустой объект (с заданным прототипом). Это нормально?

danik.js 25.06.2013 19:05

Цитата:

Сообщение от Shitbox2
Почему-то А и B ссылаются на один и тот же пустой объект

Ну где же один и тот же? Это два разных объекта.
function Obj() {}
Obj.prototype.x = 'x'

A = new Obj()
B = new Obj()

alert ( A == B )

A.y = 'y'

alert ( B.y )

nerv_ 25.06.2013 20:08

Цитата:

Сообщение от Shitbox2
Почему-то А и B ссылаются на один и тот же пустой объект (с заданным прототипом). Это нормально?

нормально. Это прототипное наследование http://learn.javascript.ru/prototype Методы и свойства, общие для этих объектов, как правило, хранятся в прототипе, частное (свойства, методы) в экземплярах объектов.

danik.js 25.06.2013 20:27

Цитата:

Сообщение от nerv_
Методы и свойства, общие для этих объектов, как правило, хранятся в прототипе

А, он об этом..
Ну дык в этом и смысл прототипов. Объекта два, но прототип то - один :)

Shitbox2 25.06.2013 20:30

Да, это я ступил, присваивал свойствам объекта одинаковые ссылки на значения и думал, что объекты одинаковые. Извиняюсь.


Часовой пояс GMT +3, время: 11:22.