如何在不使用javascript函数的情况下使用对象文字的属性

Sha*_*aoz 4 javascript jquery object-literal

我在JS中创建了一个对象文字,但是想要在不使用函数的情况下访问属性.每当我尝试,我都没有得到任何结果或它返回null.

JS:

var settings = {
        prev: '#prev',
        next: '#next',
        slides: '#slides',
        crslContainer: '#carousel',

        //I'm trying to access the 'slides' by using 'this.slides'
        inDent: $(this.slides).find('li').outerWidth(),
        fx: 'rotate',

        myFunction: function () {
          console.log(settings.inDent); //This shows null in the console, why??
        }
    }
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我试图slides通过使用this.slides,在同一个对象内部访问,但控制台说null.但是当我做这个方法时inDent: $('#slides').find('li').outerWidth(),它就可以了.这是为什么?我假设它与使用this关键字在函数内使用这些属性相同,显然情况并非如此.我只想将该对象属性(即字符串)的值传递给另一个不是函数的属性.

非常感谢

Poi*_*nty 9

您不能在对象文字中引用"正在定义的对象".也就是说,没有办法让under-construction对象的属性的值表达式引用对象本身,以便访问另一个(可能是已经定义的)属性.

但是,您可以在定义对象后向其添加属性.

 var obj = { a: 0 };
 obj.b = (obj.a ? 1 : 2);
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下:

 var settings = { ... };
 settings.inDent = ($(settings.slides).find('li').outerWidth());
Run Code Online (Sandbox Code Playgroud)