function User(name){
this.name = name;
}
User.prototype.hello = function(who){
console.log("Hello, " + who.name);
};
var vasya = new User("Вася");
var petya = new User("Петя");
vasya.hello(petya);
petya.hello(vasya);
У меня вопросы по одной части кода: this.name = name;
1)Что делает эта часть кода?
2)Зачем ключевое слово this? Что оно делает?
3)Я так понимаю "name" слева от равно это параметр функции, а справа тогда что?
this.name - к создаваемому экземпляру класса User , к его контексту this, мы привязываем переменную name. На выходе мы получим сущность Вася, у которой в this будет ключ name, которому мы присвоили значение из поданной при создании переменной name
Зачем мне "Создание объектов через "new"" или "Основные операторы",и другие ссилки, я понимаю что такое конструктор, и как весь код работает.
Я спросил только о части :
this.name = name;
И задал конкретние три вопросы, не потому что лень почитать книгу, а потому что нет понимания как это работает
Антон Спирин, я читал но там нету что такое "name" после знака равно.Что это? Переменная? Я не вижу где оно используется в моем коде.Я вижу что только левое name используется как параметр и тогда не понимаю зачем name присваивать себе же.
nathan111777, плохо читали, там все есть. И неправильно видите, что "левое name используется как параметр функции" поэтому я вам скинул пятую ссылку про параметры функции.
this.name - это обращение к параметру name, создаваемого конструктором объекта. name- локальная переменная создаваемая на основе параметра name. this.name = name; - присвоение свойству name, создаваемого конструктором объекта значения локальной переменной name созданной на основе параметра name.
Если бы изучили информацию по моим ссылкам(хотя бы первой и пятой), то вы бы это знали.
nathan111777, не очень понял вопрос. Вероятно вы меня неправильно поняли. На всякий случай немного перефразировал последний комментарий. this на момент вызова конструктора - это объект, который он создает. this.name - обращение к его свойству name. this.name = - присваивание свойству name значения. Если свойство еще не существует, то оно создается.
nathan111777, вам серьезно стоит пересмотреть ваше представление о том, что вы "знаете" - если вы выучили определения, но не можете распознать то, о чём эти определения говорят, в реальном коде - вы не знаете об этом ничего. И не надо фыркать ответно - это в ваших интересах, разобраться.
nathan111777, вы все поняли неправильно. Я даже не знаю что вам посоветовать. Разве начать изучение learn.javascript.ru с самого введения и до конца, попутно переписывая и выполняя каждый пример в jsfiddle и решая все задачи в конце параграфов.
Пара простых примеров:
function foo(bar) {
return bar * bar;
}
const result = foo(2);
console.log(); // 4
function Thing() {
this.foo = 'foo value';
this.bar = 'bar value';
}
const result = new Thing();
console.log(result); // { foo: "foo value", bar: "bar value" }