объект не изменяется через прототип
вопрос наверное нубский, но ответа не нашёл
разбирал уроки по js и столкнулся вот с чем: function User(name, age){ this.name = name; this.age = age; } var u2 = new User('Mike', 32); обычный учебный пример, но при попытке изменить через прототип User.prototype.x = true; ничего не происходит, не могу понять что не так, вроде написано без ошибок |
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 чего вы ждете? |
Цитата:
|
Цитата:
|
Цитата:
при обращении u2.х значение по цепочке прототипов берётся из прототипа (т.к. не определено у самого объекта) |
я бы посоветовал посмотреть вот это видео - мне понравилось: Конструкторы и прототипы
|
|
Цитата:
User {name: "Mike", age: 32, x: true } |
Цитата:
|
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). что вас удивляет? |
Вложений: 1
Цитата:
Цитата:
на счёт _proto_, только что попробовал, там свойство "x" тоже не указано. |
этот обрывок и есть ВСЯ последовательность? скиньте код - тогда будет о чём говорить, а пока - "учите мат.часть" (видео я дал)
|
Вложений: 4
Цитата:
в документе ****.js function User(name, age){ this.name = name; this.age = age; this.admin = false; } в консоли браузера > var u1 = new User("John", 25) < undefined > u1 < User {name: "John", age: 25, admin: false} > User.prototype.x = 10; <10 > u1 < User {name: "John", age: 25, admin: false, x: 10} |
прежде всего - вот информация по оформлению кода: http://javascript.ru/formatting
ломать глаза и расшифровывать миниатюры - не шарман :nono: |
Цитата:
сейчас исправлю |
Уже лучше :) А теперь - слушаю ваш вопрос, что вам не понятно?
|
Настоятельно рекомендую просмотреть это видео: Конструкторы и прототипы. Всё доступно и доходчиво объяснено, после просмотра 99% вопросов отпадут
|
Вложений: 1
js-jedi-knight, ты, похоже, прикалываешься.
у меня в консоли было так: |
Для проверки принадлежности свойства объекту есть специальная функция hasOwnProperty():
function User(name, age){ this.name = name; this.age = age; this.admin = false; } var u2 = new User('Mike', 32); User.prototype.x = true; alert("Есть ли свойство 'x' у объекта 'u2'? " + u2.hasOwnProperty('x')); alert("Есть ли свойство 'name' у объекта 'u2'? " + u2.hasOwnProperty('name')); P.S. нажмите зелёненький треугольничек с надписью Запустить! |
Цитата:
два - Lemme предложил вариант вывести это свойство через alert, что сработало (спасибо) и браузер показал мне "10", но hasOwnProperty выводит мне false, этого я тоже не понимаю |
мне тоже кое-что не понятно: вы видели ссылку на видео, которую я дал?
|
js-jedi-knight,
для того, чтобы что-то понять, надо приложить усилия. Самым простым способом можно считать просмотр обучающего видео, где специалисты подробно "разжевывают" тему. надо найти 1.5 часа, просмотреть видео и потом возвращаться с вопросами (если, конечно, они останутся). |
Цитата:
|
к материалу Lemme я бы приступил после видео
|
Часовой пояс GMT +3, время: 16:54. |