是否可以直接在JavaScript对象中定义数组,然后在函数上使用array.length属性?

时间:2017-10-06 13:07:39

标签: javascript arrays

我问的原因是因为这个代码有一个直接声明到对象中的数组会抛出以下错误:未捕获的ReferenceError:项目未定义

var client = {
    projects: ['a', 'b', 'c', 'd'],
    test: function() {
        return projects.length;
    }
};
console.log(client.test());

当然我们可以声明变量然后在对象中引用它,如下所示:

 var projects = ['a', 'b', 'c', 'd'];
    var client = {
        projects: projects,
        test: function() {
            return projects.length;
        }
    };
    console.log(client.test());

那会有用。但我真的想知道为什么世界上第一个给出错误的例子。怎么了???

1 个答案:

答案 0 :(得分:4)

使用this.projects.length

在对象的函数内,this引用当前对象。

请注意,这不适用于箭头功能:

var client = {
    projects: ['a', 'b', 'c', 'd'],
    test: function() {
        return this.projects.length;
    }
};
console.log(client.test());

test: () => {不起作用。但是,使用新的对象文字声明语法,您可以编写test() {,这样就可以了。