将内部变量设置为等于数组长度的方法
2017-12-28
158
我在 Javascript 中编写了一个如下所示的对象:
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
3个回答
您需要使用
this
访问两个属性(
friendsArray
和
friends
)
setFriends : function(){
this.friends = this.friendsArray.length
},
Demo
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);
gurvinder372
2017-12-28
您必须使用
this
引用对象的属性。
var facebookFriends={
name: "Ilias",
friendsArray:["john", "anna"],
friends:"",
setFriends:function(){
this.friends=this.friendsArray.length;
},
};
facebookFriends.setFriends();
console.log(facebookFriends.friends);
Ankit Agarwal
2017-12-28
var facebookFriends ={
name : "Ilias",
friendsArray : ["john", "anna"],
friends : "",
setFriends:function(){
this.friends = this.friendsArray.length
},
};
facebookFriends.setFriends();
console.log(facebookFriends.friends);
Lalit
2017-12-28