如何在javascript中获取分配给函数对象的所有属性?

时间:2018-07-15 13:36:12

标签: javascript javascript-objects

在javascript中,我可以创建一个与函数同名的对象,也可以为该函数对象分配一个新属性,例如:

    function func(){
    console.log("inside func");
    }

    func.a = "new attribute";
    console.log(func.a);
    func();
    console.log(func);

我如何查看分配给功能对象的属性(可能还有它们的值)?

3 个答案:

答案 0 :(得分:3)

  

函数是JavaScript中对象的特殊类型。

与其他编程语言不同,函数是JavaScript中对象的特殊类型。像其他对象一样,它们具有自己的方法(即绑定,调用,应用和更多)。因此,当您为a分配属性func时,您不是在创建新的func对象。相反,它是相同的func对象(函数对象),而您只是在上面创建一个新的道具func.a。阅读this了解更多信息。另外,您可以执行以下操作来打印已分配给功能对象(或JS中的任何对象)的所有道具:

for (var prop in func) {
  console.log(prop); // This will print 'a' in your case
}

答案 1 :(得分:1)

最直接的方法可能是这样:

Object.getOwnPropertyNames(func);

答案 2 :(得分:0)

在调用console.log()时,该函数隐式转换为字符串,并且默认情况下toString()仅返回函数的代码(请参见文档here)。

function func(){
  console.log("inside func");
}
func.toString = function() {
  return "a = " + this.a;
}
func.a = "new attribute";
console.log(func.a);
func();
console.log(func);