JavaScript中的函数的键值对是什么?

时间:2019-02-07 21:18:38

标签: javascript

所有对象都是JavaScript中的键值对的集合。 例如:

let foo = {
   name : "person"
}

然后,名称是键,“人”是值。

但是,函数也是对象,因此在以下情况下键值对将是什么:

let foo = {
   console.log("Hello")
}

2 个答案:

答案 0 :(得分:2)

尽管函数是对象是正确的,但声明一个函数的过程并未为其提供任何自定义键。但是,它会自动获取一些键,如果需要,您还可以在事实之后添加其他功能

下面是创建函数,然后访问它自动获得的某些属性的示例:

 function sample(a) {
  console.log('hello', a);
 }
 
 console.log(sample.name); // 'sample', since that's what i called it
 console.log(sample.length); // 1, because i specified one argument (a)
 console.log(sample.toString); // all functions inherit a number of methods, and toString is one of them
 console.log(sample.toString()); // now i'm calling to string
 

如果您想查看有关为功能自动创建哪些键的更多示例,我建议您查看this page。所有以Function.prototype或Object.prototype开头的内容都会被所有函数继承。

正如我提到的,一旦创建了功能对象,就可以将任何想要的键添加到功能对象上。例如:

function sample(a) {
  console.log('hello', a);
}

sample.metadata = "This function was created by nick";
sample.golfHandicap = 42;

console.log(sample.metadata);
console.log(sample.golfHandicap);

答案 1 :(得分:0)

可以通过多种方式定义和嵌套函数:

// defined globally. attached to window object
function runnable(){
}

// above example is same as:
window.runnable=function(){
}

// function can be attached to an object in various ways
// 1:
var obj={
   callMe:function(){
   },
   fetchMe:runnable
}
// 2:
obj.anotherFunc=function(){
}
obj.yetAnother=runnable;
obj.anotherOne=window.runnable;

// functions can also be defined in es6 lambda style