javascript函数作为对象

javascript函数作为对象,javascript,function,object,properties,Javascript,Function,Object,Properties,我知道函数在JavaScript中被视为对象,我想知道这是否是使以下内容成为可能的原因 var foo = function () { return "bar"; }; foo.baz = "ooga"; 如果您调用foo,它将返回bar,调用foo.baz将返回ooga。函数如何可能有属性?这是一种良好的编程实践吗?这是因为在Javascript中函数实际上是一个对象,更具体地说,它是一个函数对象。这就是为什么您可以为它指定属性,然而函数对象和经典对象之间的区别在于函数可以执行代码

我知道函数在JavaScript中被视为对象,我想知道这是否是使以下内容成为可能的原因

var foo = function () {
    return "bar";
};

foo.baz = "ooga";

如果您调用foo,它将返回bar,调用foo.baz将返回ooga。函数如何可能有属性?这是一种良好的编程实践吗?

这是因为在Javascript中函数实际上是一个对象,更具体地说,它是一个函数对象。这就是为什么您可以为它指定属性,然而函数对象和经典对象之间的区别在于函数可以执行代码并为其指定属性

用示例编辑:

//有效语法

var foo = function() {
    return 'hi';
};
//抛出控制台错误

var foo = {
    bar: return 'hi'
};

与foo相比,经典的javascript对象不能执行类似于return语句的语句,而foo语句可以执行,但是您可以使用foo.baz为两个“foo”分配属性。

这是好的编程实践吗?-要回答这个问题,请考虑一个函数已经有几个属性开始…参数、调用者、被调用者、名称和长度-更不用说所有标准对象属性和方法,以及其他方法,如call、apply、Bind感谢您选择我的答案,很高兴能提供帮助!