Javascript 为什么这个变量在对象文本中没有定义?

Javascript 为什么这个变量在对象文本中没有定义?,javascript,jquery,Javascript,Jquery,出于性能原因和以后的使用,我正试图在jQuery中存储选择器对象 在某些情况下,我可能需要访问我正在创建的同一对象文本中的密钥 (function($) { 'use strict'; var appCache = { $navSecondary: $('#nav-secondary'), $navMore: appCache.$navSecondary.find('.more') }; })(jQuery); 上述代码产生错误

出于性能原因和以后的使用,我正试图在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用于解释上述方法不起作用的原因并同时提供解决方案。