考虑以下对象:错误,它失去范围
var data = {
el : $('.element'),
value1 : this.el.data('value1')
}
为什么this
失去范围是什么?并抛出一个错误?
我可以做到以下几点,但它不是有效的,因为我基本上选择的div两次:
var data = {
el : $('.element'),
value1 : $('.element').data('value1')
}
这适用于功能:
var data = {
el : $('.element'),
test : function() {
console.log(this.el) // works
}
}
它完全没有损失范围,它根本不是你想象的那样。你还没有改变范围,你使用'this'的范围与'var data = {' –
之前的行相同只是试图澄清你的范围问题。 当你定义“数据”时,“这个”范围仍然是全局范围..数据尚未定义。 javascript引擎会在数据完全评估之前尝试评估this.el.data('value1'),因此这只是对数据的引用。 –