Javascript 为什么这个变量在对象文本中没有定义?
出于性能原因和以后的使用,我正试图在jQuery中存储选择器对象 在某些情况下,我可能需要访问我正在创建的同一对象文本中的密钥Javascript 为什么这个变量在对象文本中没有定义?,javascript,jquery,Javascript,Jquery,出于性能原因和以后的使用,我正试图在jQuery中存储选择器对象 在某些情况下,我可能需要访问我正在创建的同一对象文本中的密钥 (function($) { 'use strict'; var appCache = { $navSecondary: $('#nav-secondary'), $navMore: appCache.$navSecondary.find('.more') }; })(jQuery); 上述代码产生错误
(function($) {
'use strict';
var appCache = {
$navSecondary: $('#nav-secondary'),
$navMore: appCache.$navSecondary.find('.more')
};
})(jQuery);
上述代码产生错误:
TypeError: appCache is undefined
我怎样才能避开这件事?我需要在jQuery中再次执行选择吗
谢谢。首先计算赋值运算符的右侧。然后将结果向左传递并分配给变量 在构造对象时,变量是
未定义的
,因此您不能使用它的值(虽然它已声明,var
语句已挂起)
可以在创建对象后指定新特性
var appCache = {
$navSecondary: $('#nav-secondary')
};
appCache["$navMore"] = appCache.$navSecondary.find('.more');
首先计算赋值运算符的右侧。然后将结果向左传递并分配给变量 在构造对象时,变量是
未定义的
,因此您不能使用它的值(虽然它已声明,var
语句已挂起)
可以在创建对象后指定新特性
var appCache = {
$navSecondary: $('#nav-secondary')
};
appCache["$navMore"] = appCache.$navSecondary.find('.more');
因为您试图在变量初始化期间访问该变量
因为您试图在变量初始化期间访问它。您可以使用函数代替:
$navMore: function(){return this.$navSecondary.find('.more')}
然后在初始化对象后调用它:
appCache.$navMore(); // this will return set of jQuery matched elements
您可以改为使用函数:
$navMore: function(){return this.$navSecondary.find('.more')}
然后在初始化对象后调用它:
appCache.$navMore(); // this will return set of jQuery matched elements
当您调用
appCache
设置$navMore
时,appCache
仍然是未定义的。当您调用appCache
设置$navMore
时,appCache
仍然是未定义的
+1,用于解释上述方法不起作用的原因并同时提供解决方案。+1用于解释上述方法不起作用的原因并同时提供解决方案。