我在Javascript中编程了一个Object,看起来像这样:
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
friends=friendsArray.length
},
};
当我调用该函数时,我得到以下错误,我无法理解。
VM52:6 Uncaught ReferenceError: friendsArray is not defined
at Object.setFriends (<anonymous>:6:2)
at <anonymous>:1:17
任何人都可以解释为什么会发生这种情况,因为定义了数组? 不知怎的,似乎函数在被调用之前没有被编译。
修改
最初的问题已经解决,但现在我提出了一个新想法: 如何在没有setter方法的情况下初始化变量:
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
friends:this.friendsArray.length,
};
现在出现了另一个错误:
VM51:5 Uncaught TypeError: Cannot read property 'length' of undefined
at <anonymous>:5:31
答案 0 :(得分:3)
您需要使用friendsArray
friends
和this
)
setFriends : function(){
this.friends = this.friendsArray.length
},
<强>演示强>
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
this.friends=this.friendsArray.length
},
};
console.log( "before invoking setFriends ",facebookFriends.friends);
facebookFriends.setFriends();
console.log( "after invoking setFriends ",facebookFriends.friends);
&#13;
答案 1 :(得分:0)
您必须使用this
引用对象的属性。
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
this.friends=this.friendsArray.length;
},
};
facebookFriends.setFriends();
console.log(facebookFriends.friends);
&#13;
答案 2 :(得分:0)
var facebookFriends ={
name : "Ilias",
friendsArray : ["john", "anna"],
friends : "",
setFriends:function(){
this.friends = this.friendsArray.length
},
};
facebookFriends.setFriends();
console.log(facebookFriends.friends);
&#13;
答案 3 :(得分:0)
属性friendsArray
未定义为变量。您将facebookFriends
定义为变量。通过编写facebookFriends.friendsArray
,您可以访问变量facebookFriends
的属性。此外,您的setFriends
功能应如下所示:
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
friends = facebookFriends.friendsArray.length
},
};
答案 4 :(得分:0)
this.friendsArray
或对象名称facebookFriends.friendsArray
应该有效
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
friends= this.friendsArray.length //or facebookFriends.friendsArray.length
},
};