我上传了一个示例代码,其中有两个使用模块化模式定义的对象。
var obj1 = {
cachdom: function() {
// querying a dom element
this.$interactiveReport = $('#BugPreventiveIR_data_panel');
}
};
var obj2 = {
$IR: obj1.$interactiveReport,
logging: function() {
// This returns undefined
console.log(this.$IR);
}
};
// Invoking the Objects only after document is ready.
$(document).ready(function() {
console.clear();
interactiveReportRegion.init();
displayOfBugList.logging();
});
但是,当我在控制台中检查时,obj2.logging为此返回undefined。$ IR。但是,如果我通过控制台访问obj1。$ interactiveReport,我可以查看对象值。 Similairly,如果我再次在控制台中定义第二个对象,它会获得obj2的正确值。$ IR。
我无法访问第二个对象中第一个对象的属性?
我的整个代码都可以在这里找到 https://gist.github.com/alaghu/6225e50b35ecfdaf2ee8f752f596f49b
答案 0 :(得分:0)
日志记录功能需要知道"这个"意味着因为它不是一个构造的对象..这应该这样做。
displayOfBugList.logging.apply(displayOfBugList);
答案 1 :(得分:0)
定义函数会改变“this”的范围。考虑使用lamda函数来解决这个问题。还有能力绑定“这个”是什么,但我回避那个方法