gpt4 book ai didi

javascript - Extjs 6 : what does 'onClassExtended' do when defining a class?

转载 作者:行者123 更新时间:2023-11-28 18:31:55 27 4
gpt4 key购买 nike

Ext.define('Algo.data.Simulated', {
requires: [
//....
],

onClassExtended: function (cls, data) {
// ....
}
})

这是代码。我在 Sencha 的网站上找不到任何有关它的文档。另外,cls和data是什么意思?

最佳答案

嗯,找出答案的简单方法是定义一个新类,重写 onClassExtended,并使用两个 console.log 来记录值。

但是让我们采取困难的方式,在 ExtJS 代码库中搜索 onClassExtended。 Notepad++ 确实提供了一个搜索功能,可以在目录中的所有文件中查找字符串,这对于 ExtJS 来说非常有用。

你会发现该属性首先在packages\core\src\class\Class.js中处理,l。 347 ff.,并且处理除了将函数添加到 $onExtended 之外什么也不做。于是我们搜索$onExtended,发现通常$onExtended是在triggerExtended()中调用的,你猜猜,它是从哪里调用的, packages\core\src\class\Class.js,l。 347 及以下。 (但它是在当前类的 onClassExtended 添加到列表之前调用的!)

Class.triggerExtended.apply(Class, arguments);

一起
function(Class, data, hooks) {

意味着cls将包含Class中的任何内容,而data将包含已放入的任何data进入扩展方法。

看代码,我认为这两个参数就是Ext.define的两个参数:

Ext.define(
'MyApp.data.Test', // <- Class
{ // data object
extend:'Ext.class.Base' // <- "data.extend" is deleted in line 357
...
}
);

看起来onClassExtend确实允许您在层次结构中的每个类中定义一个可以转换类定义的处理指令。它们从最顶层(最特殊的类)开始执行,然后依次执行,直到到达基类 Ext.class.Base

与构造函数不同,这些转换是在子类定义期间执行的,而不是在实例创建期间执行。

关于javascript - Extjs 6 : what does 'onClassExtended' do when defining a class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37822206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com