gpt4 book ai didi

javascript - dojo 1.9 : what annotation does declare. safeMixin 添加?

转载 作者:行者123 更新时间:2023-11-29 16:14:03 26 4
gpt4 key购买 nike

我一直在阅读 dojo 1.9关于 declare.safeMixin() 的文档,着重说说它和lang.mixin的区别.

这是我找到的解释......

safeMixin() is a function defined in dojo/declare. It has the same functionality as dojo/_base/lang::mixin(), but additionally it annotates all copied methods compatibly with dojo/declare. This decoration can affect how this.inherited() works in mixed-in methods.

我可以关注example但它并没有真正准确地解释添加了什么以及在哪里添加,任何人都可以进一步举例说明每个复制的方法添加了什么注释吗?

明确地说,我不是要解释继承,我只是专门询问使用 declare.safeMixin() 而不是 lang 添加的注释。混入

最佳答案

使用 safeMixin 允许您将函数混合到一个实例中,该实例可以利用 this.inherited 的方式与使用 declare 定义的原型(prototype)方法相同> 可以。

例如,以下将记录 2 条消息:

require([
"dojo/_base/lang",
"dojo/_base/declare"
], function(lang, declare){
var A = declare(null, {
method: function () {
console.log('method in prototype');
}
});
var a = new A();

declare.safeMixin(a, {
method: function () {
this.inherited(arguments);
console.log('method in instance');
}
});

a.method();
});

如果没有 safeMixin,您将无法从重写方法调用 this.inherited(arguments)(至少,在没有附加参数的情况下)——您d 最终得到一个错误:

Error: declare: can't deduce a name to call inherited()

关于javascript - dojo 1.9 : what annotation does declare. safeMixin 添加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123183/

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