所有对象都是JavaScript中的键值对的集合。 例如:
let foo = {
name : "person"
}
然后,名称是键,“人”是值。
但是,函数也是对象,因此在以下情况下键值对将是什么:
let foo = {
console.log("Hello")
}
答案 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