javascript在函数中声明键值对

时间:2016-04-30 13:40:02

标签: javascript function object

让我们说我有一个对象,其中有一个函数,在函数内部我声明了一些关键值。 如果每个函数都是javascript中的函数对象,那么在其中声明键值对是完全合法的。

var a ={
  a: "shiv",
  b: "shiv1",
  c: function(){
    L:"shiv1",
    console.log(L);
  }
}

我如何访问这些密钥。在什么情况下我需要将键值对添加到函数中。这意味着什么。例如,在此功能中,如何访问L键。

编辑1: Console.log行将通过错误。 假设我们只有这个代码

var a ={
  a: "shiv",
  b: "shiv1",
  c: function(){
    L:"shiv1",
  }
}

声明函数中的键意味着什么。如果我需要访问L键我怎么能

3 个答案:

答案 0 :(得分:1)

您的每个函数都是一个对象,这意味着您确实可以为其设置属性。实际上,每个函数都有length属性,表示此函数接受的形式参数的数量。

但是,用于设置函数属性的语法不是您应该如何操作的。即使您使用完全有效的语法,这是label statement,而不是属性定义语法。如果你想在你的情况下将属性设置为一个函数对象,你可以这样做:

function c() {
  console.log(c.L) // => "I'm a property of c function"
}
c.L = "I'm a property of c function";

var a = {
  a: "shiv",
  b: "shiv1",
  c: c
}

什么时候有用?就像我说的那样,它的用途有限,比如函数的length属性,但在很多情况下你不需要直接在函数级别设置属性。

答案 1 :(得分:0)

这必须抛出错误:

L:"shiv1",
console.log(l);

你可能想要:

  c: function(){
    return {L:"shiv1"};
  }

然后将其作为:

访问
a.c().L;

这里有完整的例子:



var a ={
  a: "shiv",
  b: "shiv1",
  c: function(){
    return {L:"shiv1"}    
  }
}

alert(a.c().L);




答案 2 :(得分:0)

您不能像在函数内部那样声明键。 这不起作用:

c: function(){
    L:"shiv1", //Declaration don't work in this context
    console.log(l); //Don't work
}

试试这个(请删除"功能"声明):

c: {
 L:"shiv1"
}

另外,你可以这样做:

c: function() {
    var test = "shiv1";
    return test;
}

如果您想使用参数:

c: function(a, b) {
    var test = a + " shiv1 " + b;
    return test;
}

或者:

c: function(a, b) {
    var total = a + b;
    return total;
}