如何在 ExtJS4 中为单例添加方法?

Posted

技术标签:

【中文标题】如何在 ExtJS4 中为单例添加方法?【英文标题】:How can I add a method to a singleton in ExtJS4? 【发布时间】:2012-04-20 08:34:36 【问题描述】:

这是 ExtJS 形状类

Ext.define('Ext.chart.Shape', 

    singleton: true,

    circle: function (surface, opts) 
        return surface.add(Ext.apply(
            type: 'circle',
            x: opts.x,
            y: opts.y,
            stroke: null,
            radius: opts.radius
        , opts));
    ,
    ...
);

我想为这个类添加一个方法。例如:

myCircle: function (surface, opts) 
        return ...
,

我该怎么做?

【问题讨论】:

4.0.7 现在。有什么不同吗? 【参考方案1】:

我找到了答案。如果有人需要,这就是解决方案:

Ext.define('MyShape', 
    override: 'Ext.chart.Shape',

    initialize: function() 
        this.callOverridden(arguments);
    ,

    myCircle: function (surface, opts) 
        return ...
    
);

【讨论】:

【参考方案2】:

您可以扩展以添加新函数,或覆盖以更改类上现有函数的行为。下面的链接是 sencha 文档中解释如何使用它们的详细信息。

Extend

Override

extend 的示例实现:

Ext.define('yourCustomClassHere', 
    extend: 'Ext.chart.Shape',
    newFunctionName: function () 
       //your function here
    
);

【讨论】:

谢谢。你能给我一个例子吗?因为我在尝试使用它们时遇到了不同的错误。 什么错误?我链接到的文档已经包含示例。 我不想扩展它。我只想向形状类添加另一种方法。当我想覆盖它时 -Ext.chart.Shape.override()- 我得到了这个错误:“Ext.chart.Shape.override 不是一个函数” 如果我想扩展它,我得到这个错误:“parentPrototype is undefined” 添加了扩展的示例实现。我相信 Extend 用于添加新功能,而 Override 用于更改现有功能的行为。

以上是关于如何在 ExtJS4 中为单例添加方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QDoubleSpinBox 中为单步设置多个值

如何在 Laravel 7 中为单选按钮设置表单标签

如何从 facebook/google/... oauth2 身份验证在 Spring (Boot) 中为单页应用程序派生自定义登录令牌?

如何隔离仅允许创建为单例的不良行为 3rd-party c-lib?

如何在SQL中为当前年度成本和上一年成本编写查询?

PHP单例模式简记