gpt4 book ai didi

javascript - 在严格模式下使用 this.inherited(arguments) 时出现 DOJO 错误

转载 作者:搜寻专家 更新时间:2023-11-01 04:30:37 25 4
gpt4 key购买 nike

我正在为 Dijit 自定义小部件声明一个基本“类”。

当处于'严格模式'例程时this.inherited(arguments);正在调用,我收到此错误:

Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

我需要保持使用“严格模式”。

知道怎么解决吗?

define([
'dojo/_base/declare',
'dojo/topic',
'dojo/_base/lang'
], function (
declare,
topic,
lang
) {
'use strict';
var attachTo = 'myPanels';
return declare(null, {
id: null,
title: null,
postCreate: function () {
// ERROR HERE
this.inherited(arguments);
this.placeAt(attachTo);
},
constructor: function () {
},
});
});

注意:删除 'strict mode' 解决了这个问题,但在我的情况下不是一个选项,因为我需要使用 'strict mode'

最佳答案

自 v1.13.0 起,此问题已在 Dojo 框架中得到解决。

假设您使用的是 Dojo 1.13.0 或更新版本,要从严格模式文件调用 this.inherited,只需传递对调用函数的引用(使用命名函数表达式或 NFE) 作为第一个参数。

所以你上面的代码应该是这样的:

define([
'dojo/_base/declare',
'dojo/topic',
'dojo/_base/lang'
], function (
declare,
topic,
lang
) {
'use strict';
var attachTo = 'myPanels';
return declare(null, {
id: null,
title: null,
postCreate: function postCreate() { //(1) add function name
//(2) pass function reference as the first argument
this.inherited(postCreate, arguments);
this.placeAt(attachTo);
},
constructor: function () {
},
});
});

请注意,命名函数表达式 (NFE) 在 IE8 和更早版本中存在很多错误,因此如果您支持这些浏览器,请不要使用它。

关于javascript - 在严格模式下使用 this.inherited(arguments) 时出现 DOJO 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33208956/

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