从定义上看,javascript中的函数和对象有什么本质区别?

What's substantive difference between function and Object in javascript by definition?

本文关键字:什么 对象 区别 函数 定义 javascript      更新时间:2023-09-26

当我们在javascript中定义对象和函数时,我们看不到太大的区别。对象和函数有什么不同吗?

JavaScript中的一个很好的经验法则是,您看到的每个对象都以某种方式派生自同一个object。函数在JavaScript中是对象,如下所示。这就是为什么它们看起来很相似。

编辑:原始数据类型不是对象。我相信这是唯一的例外。

对于初学者来说,Javascript中的几乎所有东西都是对象:数组,函数,对象文字,甚至字符串和数字都可以通过` `暂时提升为对象。'操作符,尽管它们实际上不是对象。

每个Javascript对象都有内置属性(引用),例如proto指向唯一函数构造函数的引用

但是函数是非常独特的对象,对于初学者来说,它们拥有一个代码属性,可以通过一个简单的操作符调用:

function a(){ console.log("hello") }
a();

它们有一个作用域对象引用,其中包含它的所有父变量,允许闭包:

function a(){ 
    var c = 1;
    return function b(){
        console.log("i have access to my father's vars" + c);
    }
}
var c = a();

他们有能力创建执行上下文,你可以在这里读到:

http://davidshariff.com/blog/what-is-the-execution-context-in-javascript/

并且通常具有许多其他对象不具备的独特内置功能。最后,可以通过typeof操作符将函数与对象字面值区分开来:
typeof function(){} //function
typeof {} //object