Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   объект не изменяется через прототип (https://javascript.ru/forum/misc/60691-obekt-ne-izmenyaetsya-cherez-prototip.html)

js-jedi-knight 14.01.2016 18:56

объект не изменяется через прототип
 
вопрос наверное нубский, но ответа не нашёл
разбирал уроки по js и столкнулся вот с чем:

function User(name, age){
    this.name = name;
    this.age = age;
}

var u2 = new User('Mike', 32);

обычный учебный пример, но при попытке изменить через прототип

User.prototype.x = true;

ничего не происходит, не могу понять что не так, вроде написано без ошибок

Lemme 14.01.2016 18:59

function User(name, age){
    this.name = name;
    this.age = age;
}

var u2 = new User('Mike', 32);
alert(u2.x);
User.prototype.x = true;
alert(u2.x);


p.s чего вы ждете?

рони 14.01.2016 19:00

Цитата:

Сообщение от js-jedi-knight
ничего не происходит

а что должно было произойти?

js-jedi-knight 14.01.2016 19:10

Цитата:

Сообщение от рони (Сообщение 403789)
а что должно было произойти?

при вводе через консоль "u2;", свойство "x" не отображается

Keramet 14.01.2016 19:14

Цитата:

Сообщение от js-jedi-knight (Сообщение 403793)
при вводе через консоль "u2;", свойство "x" не отображается

а его нет нет у u2, оно в прототипе.
при обращении u2.х значение по цепочке прототипов берётся из прототипа (т.к. не определено у самого объекта)

Keramet 14.01.2016 19:17

я бы посоветовал посмотреть вот это видео - мне понравилось: Конструкторы и прототипы

Lemme 14.01.2016 19:17

Советую почитать.

http://learn.javascript.ru/prototypes

js-jedi-knight 14.01.2016 19:22

Цитата:

Сообщение от Keramet (Сообщение 403794)
а его нет нет у u2, оно в прототипе.
при обращении u2.х значение по цепочке прототипов берётся из прототипа (т.к. не определено у самого объекта)

допустим, тогда почему в учебном примере после той же последовательности действий, через ту же консоль получается следующее:

User {name: "Mike", age: 32, x: true }

Keramet 14.01.2016 19:24

Цитата:

Сообщение от js-jedi-knight (Сообщение 403797)
... после той же последовательности действий...

покажите эту вашу "последовательность". что вы делали (или пример учебный скиньте)

Keramet 14.01.2016 19:29

function User(name, age){
				this.name = name;
				this.age = age;
			}
			var u2 = new User('Mike', 32);
			User.prototype.x = true;
			console.log(u2);

в консоли:
User {name: "Mike", age: 32}

есть ещё свойстов __proto__: User - это ссылка на прототип (у прототипа есть свойство х: true). что вас удивляет?


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