Это мой первый вопрос, поэтому приношу свои извинения, если я пропустил что-либо. Возможно, решение для моей проблемы можно найти, но я понятия не имею, как его искать, никаких подсказок о том, как его спросить в Google или что-то в этом роде.Конструктор и аргументы Javascript
У меня следующая проблема, давайте иметь такой конструктор
const Product = function (color) {
let self = {};
self.setColor = function(colorToSet) {
color = colorToSet;
}
self.getColor = function() {
return color;
}
return self;
};
теперь, когда я пытался использовать:
let self = {}, color;
в хромированной консоли я получил сообщение об ошибке, что цвет был уже объявлен, так что я удаленное поле цвета и после этого (с кодом фрагмента выше), волшебство произошло, что я не могу объяснить.
скажем, я напишу что-то вроде этого:
let a = Product("Yello");
a.getColor() ----> "Yellow"
a.setColor("red");
a.getColor() ----> "red";
Если она возвращает цвет в первый раз, то он должен быть объявлен как-то. Я не знаю, где цветовое поле, я не могу найти его в объекте или в его прототипе, нигде на самом деле. Не могли бы вы объяснить мне, почему? и где он?
Я знаю, что могу просто объявить цвет, например: self.color = color; Но я хочу знать, как работает пример выше и что произошло с полем цвета.
Также вы могли бы рассказать мне, могу ли я использовать let с объявлением значений из параметров таким образом?
const Product = function (color) {
let self = {}, color;
self.setColor = function(colorToSet) {
color = colorToSet;
}
self.getColor = function() {
return color;
}
return self;
};
Afaik, если вы используете только 'color', он добавляется к объекту' window'. Вы фактически получаете/устанавливаете 'window.color'. –
@Chris G: цвет не определяется на 'window', это ** закрытие ** поведения – Pineda