是否可以直接在JavaScript对象中定义数组,然后对函数使用array.length属性?
我问这个问题的原因是,这个直接在对象中声明数组的代码将抛出以下错误:uncaughtreferenceerror:projects未定义是否可以直接在JavaScript对象中定义数组,然后对函数使用array.length属性?,javascript,arrays,Javascript,Arrays,我问这个问题的原因是,这个直接在对象中声明数组的代码将抛出以下错误:uncaughtreferenceerror:projects未定义 var client = { projects: ['a', 'b', 'c', 'd'], test: function() { return projects.length; } }; console.log(client.test()); 当然,我们可以声明变量,然后在对象中引用它,如下所示: var proj
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());
那就行了。但我真的想知道为什么世界上第一个给出错误的例子。有什么问题吗???使用
this.projects.length
在对象上的函数中,此
引用当前对象
请注意,这不适用于箭头功能:
var client = {
projects: ['a', 'b', 'c', 'd'],
test: function() {
return this.projects.length;
}
};
console.log(client.test());
test:()=>{
不起作用。但是,使用新的对象文字声明语法,您可以编写test(){
那就行了。返回这个.projects.length;
因为JS对象不是这样工作的?一些基本的JS O.O教程会很快帮你解决这个问题。@DaveNewton可怜的孩子,给他一些时间来发现这个问题。然后我们可以标记为复制他的。@n00dl3很公平-我已经在准备时删除了我的评论;)@daveNewton我知道我们可以用它来指代对象。我不清楚的是(也许对你来说这是因为你是个天才)为什么我们必须使用this关键字,在第一个例子中,很明显项目被定义为变量(就像第二个例子一样)1.我觉得这个问题比表面上看起来要深刻一些。