我问的原因是因为这个代码有一个直接声明到对象中的数组会抛出以下错误:未捕获的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());
那会有用。但我真的想知道为什么世界上第一个给出错误的例子。怎么了???
答案 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() {
,这样就可以了。