设置内部变量等于数组长度的方法

时间:2017-12-28 09:11:37

标签: javascript arrays

我在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

5 个答案:

答案 0 :(得分:3)

您需要使用friendsArray

访问这两个属性(friendsthis
setFriends : function(){
    this.friends = this.friendsArray.length
},

<强>演示

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:0)

您必须使用this引用对象的属性。

&#13;
&#13;
var facebookFriends={
    name: "Ilias",
    friendsArray:["john", "anna"],
    friends:"",
    setFriends:function(){
	        this.friends=this.friendsArray.length;
    },
};

facebookFriends.setFriends();
console.log(facebookFriends.friends);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

&#13;
&#13;
var facebookFriends ={
    name : "Ilias",
    friendsArray : ["john", "anna"],
    friends : "",
    setFriends:function(){
	    this.friends = this.friendsArray.length
    },
};

facebookFriends.setFriends();
console.log(facebookFriends.friends);
&#13;
&#13;
&#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
},

};