gpt4 book ai didi

javascript - 使用 "this"的 javascript dojo 闭包中使用的函数 -notation 未定义

转载 作者:行者123 更新时间:2023-11-29 17:30:28 25 4
gpt4 key购买 nike

我在使用“this”访问对象函数时遇到问题。对于下面的示例(已简化,因为由于各种原因我无法提供实际代码),函数调用 this._getEntry() 在调用时为“未定义”创建列表()。

我希望得到一些意见,这是否是由于对javascript 闭包或语法错误。

在后一种情况下,我将不得不自己查找实际代码中的错误。

如果是对 javascript 或 dojo 概念的误解,我将不胜感激关于如何正确确定和访问下面提到的函数 (_getEntry()) 的一些帮助。

var OBJECT = {
_getEntry : function(entry){
var li = document.createElement('LI');
li.appendChild(document.createTextNode(entry));
return li;
},
createList : function(entryArray){
var list = document.createElement('UL');
dojo.forEach(entryArray,function(entry){
list.appendChild(this._getEntry(entry));
});
dojo.body().appendChild(list);
}
};
OBJECT.createList(["entry1","entry2"]);

谢谢!

最佳答案

首先,我认为您粘贴的代码缺少 ); 来完成 forEach

其次,forEach 采用可选的第三个参数,该参数确定传递函数运行的上下文。如果没有给出,它默认为全局范围,所以是的,这是你的问题。假设 this 已经在 forEach 之外引用了您需要它的内容,您应该能够将 this 作为第三个参数传递给forEach 它应该可以工作,例如:

dojo.forEach(entryArray, function(entry){
list.appendChild(this._getEntry(entry));
}, this);

更多信息:http://dojotoolkit.org/api/dojo/forEach - 基于 JS 1.6 中的 API https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach

关于javascript - 使用 "this"的 javascript dojo 闭包中使用的函数 -notation 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726611/

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