Сделать переменную члена ExtJS приватной

1
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

1 ответ

0
Лучший ответ

Основной пример шаблона, который может быть применен с 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);
  • 0
    как я могу использовать это для моей проблемы?
  • 0
    @RomAZE проверь мои изменения, не забудь принять ответ, если он тебе поможет
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню