You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS如何创建仅含getter或仅含setter的config配置项

ExtJS 实现仅生成单个getter/setter的config配置方案

默认ExtJS的config配置系统会为每个配置项自动生成成对的getXxx和setXxx方法,要实现仅生成单个存取方法可以用以下两种方案:

方案一:高版本ExtJS原生配置(推荐,适配ExtJS 5.1+/6.x+)

直接在配置项的定义中指定getter: false或setter: false即可关闭对应方法的生成,示例代码如下:

Ext.define('Myapp.myclass', {
   config: {
      // 仅生成setter,关闭getter生成
      conf1 : {
          $value: true,
          getter: false
      },
      // 仅生成getter,关闭setter生成
      conf2 : {
          $value: false,
          setter: false
      }
   },

   constructor: function(config) {
       // 官方推荐用initConfig完成配置初始化,会自动处理默认值合并、钩子触发等逻辑
       this.initConfig(config);
   }
});

验证逻辑:

  • 实例化类后调用setConf1(false)可正常执行,getConf1()会抛出方法不存在的错误
  • 实例化类后调用getConf2()可正常返回默认值false,setConf2(true)会抛出方法不存在的错误

方案二:低版本ExtJS兼容方案(适配ExtJS 4.x)

低版本ExtJS不支持单配置项关闭方法生成,可以手动实现需要的单个存取方法,不将配置项放入全局config中即可:

Ext.define('Myapp.myclass', {
    // 私有属性存储配置值
    _conf1: true,
    _conf2: false,

    // 仅实现conf1的setter
    setConf1: function(value) {
        // 可自行添加自定义校验、变更触发逻辑,和原生config的apply/update逻辑对齐
        this._conf1 = value;
    },

    // 仅实现conf2的getter
    getConf2: function() {
        return this._conf2;
    },

    constructor: function(config) {
        if (config && config.conf1) {
            this.setConf1(config.conf1);
        }
        // conf2不对外暴露修改入口,符合仅getter的需求
    }
});

注意事项

  • 如果使用方案一时遇到方法不存在仍抛错的情况,可以在类定义中添加$configStrict: false关闭配置方法严格校验
  • 方案一关闭单个方法生成后,对应配置项的applyXxx、updateXxx自定义钩子仍然会正常触发,不需要额外调整逻辑

内容的提问来源于stack exchange,提问作者user5507535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:00:00