让我们说我有一个对象,其中有一个函数,在函数内部我声明了一些关键值。 如果每个函数都是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键我怎么能
答案 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;
}