В настоящее время этот код определяет геттер / сеттер для свойства selectedID объекта.Объект называется Компоненты.
_selectedID: null,
get SelectedID() {
return this._selectedID;
},
set SelectedID(val) {
if (!isNaN(val) && val != this._selectedID) {
this._notifyChanged(val);
this._selectedID = val;
}
},
Хотя это работает в том смысле, что браузер знает, как обрабатывать сгенерированный javascript, Visual Studio заявляет, что есть синтаксические предупреждения.Можно сказать то же самое, но не хватает ООПтности предыдущего:
(РЕДАКТИРОВАТЬ: Очевидно, я могу использовать это вместо компонентов здесь, так что «отсутствие ООП» не так уж много проблем, но все жеЛюбопытно, если лучше).
function GetSelectedID() {
//return Components._selectedID;
return this._selectedID;
}
function SetSelectedID(val) {
//if (!isNaN(val) && val != Components._selectedID) {
//Components._notifyChanged(val);
//Components._selectedID = val;
//}
if (!isNaN(val) && val != this._selectedID) {
this._notifyChanged(val);
this._selectedID = val;
}
}
Object.defineProperty(Components, 'SelectedID', { get: GetSelectedID
, set: SetSelectedID
, configurable: true
, enumerable: true });
Обратите внимание, что вместо того, чтобы говорить это, мне нужно сказать Компоненты, так как это происходит за пределами конструктора объекта Компонента.Если я пытаюсь переместить функции в конструктор, я получаю синтаксические ошибки.
Кто-нибудь знает, возможно ли достичь обоих?Что-то вроде:
SelectedID: function () {
alert("Getter");
return this._selectedID;
},
SelectedID: function (val) {
alert("setter");
if (!isNaN(val) && val != this._selectedID) {
this._notifyChanged(val);
this._selectedID = val;
}
},
Приведенный выше код не работает, хотя.Когда я говорю Components.SelectedID
, оповещение получателя не срабатывает.