Ext.define("rgpd.user.Profile", {
config: {
id: -1,
role: 0,
token: '',
corps_metier: [],
},
constructor: function(config) {
this.initConfig(config);
this.callParent(arguments);
}
});
У меня есть это определение класса. Мне нужно иметь глобальный доступ к этому и значениям объектов (используя геттеры и сеттеры), но переменные-члены (id, токен, роль и т.д.) Должны быть недоступны с консоли. Я пытался использовать частную собственность, но это не сработало
редактировать:
из приведенного примера
Ext.application({ name : 'Fiddle',
launch : function() {
Ext.Msg.alert('Fiddle', 'Welcome to Sencha Fiddle!');
}
});
Ext.define('MyWindow', (function (){
var isWindow = true;
var isPrivateProp = true;
return {
isWindow: isWindow
};
})());
var myWindow = new MyWindow();
console.log('object: ', MyWindow);
console.log('isWindow: ', myWindow.isWindow);
console.log('isPrivateProp: ', myWindow.isPrivateProp);
myWindow.isPrivateProp = false;
console.log('isPrivateProp: ', myWindow.isPrivateProp);
если я это сделаю, значение isPrivateProp сбрасывается на false. Я хочу, чтобы свойство было доступно ТОЛЬКО с использованием моей функции getters, и я хочу, чтобы иметь возможность изменять значение свойства ТОЛЬКО, используя мои сеттеры
Основной пример шаблона, который может быть применен с ExtJs, чтобы иметь частных членов:
Ext.define(‘MyButton, (function(){
function privateStaticMethod() {
console.log(‘static method);
}
function privateMethod(me) {
console.log(me.getText());
};
function privateMethod2() {
console.log(this.getText());
}
return {
extends: ‘Ext.button.Button,
text: 'Click me',
// will be called when the button was clicked
handler: function() {
privateStaticMethod();
privateMethod(this);
privateMethod2.apply(this);
}
};
})()
);
Источник: http://flexblog.faratasystems.com/index.php/private-methods-in-ext-js/
Изменение: перейдите на страницу https://fiddle.sencha.com/#view/editor
вставьте этот код в консоль:
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.Msg.alert('Fiddle', 'Welcome to Sencha Fiddle!');
}
});
Ext.define('MyWindow', (function (){
var isWindow = true;
var isPrivateProp = true;
return {
isWindow: function () { return isWindow }
};
})());
var myWindow = new MyWindow();
console.log('object: ', MyWindow);
console.log('isWindow: ', myWindow.isWindow);
console.log('isPrivateProp: ', myWindow.isPrivateProp);