Написал такую штуку: Вопросы собственно в коде.
var Person = {
constructor: function(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
return this; //Что тут возвращает this? Все аргументы из фунцкии или что?
},
};
/*________________________*/
var WebDeveloper = Object.create(Person); //Тут пока всё более-менее понятно
WebDeveloper.constructor = function(name, age, gender, skills) {
Person.constructor.apply(this, arguments); //что делает apply? я читал, что устанавливает значение this в функции. Отсюда и вопрос: разве this это типо не ключевое слово а-ля var?
this.skills = skills || []; //что собственно тут устанавливается? skills или массив? пустой? и когда сработает skills, а когда массив? значение skills внутри функции теперь становится и значением skills которая за пределами функции - это я понял. ну а метод apply тут причем?
return this;
};
var developer = Object.create(WebDeveloper).constructor("Jack", 21, "male", ["html", "css", "js", "php", "mysql"]);
var Person = {
constructor: function(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
return this; // A: Что тут возвращает this? Все аргументы из фунцкии или что?
// Q: Зависит от метода вызова.
// Метод: Person
// Функция: window (или undefined в строгом режиме)
},
};
/*________________________*/
var WebDeveloper = Object.create(Person); //Тут пока всё более-менее понятно
WebDeveloper.constructor = function(name, age, gender, skills) {
Person.constructor.apply(this, arguments); // A: что делает apply? я читал, что устанавливает значение this в функции. Отсюда и вопрос: разве this это типо не ключевое слово а-ля var?
// Q: Действительно, вызывает с указанным this. Здесь передаётся текущий this
this.skills = skills || []; // A: что собственно тут устанавливается? skills или массив? пустой? и когда сработает skills, а когда массив? значение skills внутри функции теперь становится и значением skills которая за пределами функции - это я понял. ну а метод apply тут причем?
// Q: Устанавливается свойство равное или skills, либо, если он false, пустой массив
// apply вызывает родительский конструктор, чтобы он навесил свои значения (паттерн такой есть)
return this;
};
var developer = Object.create(WebDeveloper).constructor("Jack", 21, "male", ["html", "css", "js", "php", "mysql"]);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Решил использовать react-scrollbar для кастомизации скроллбаров на сайтеВ мануале по использованию, указывается нодовский импорт модуля