理解Javascript _ 09 _函数和对象
注:理论太深奥,我不会改变以确保所有理论都是正确的。然而,经过多次测试,没有发现实际代码和理论之间的冲突。如有错误,请找您指导!函数首先,回顾函数对象的概念。函数是对象,表示函数的对象是函数对象。所有函数对象都是由函数对象构造的。也就是说,函数是顶层构造函数。它构建系统中的所有对象,包括用户定义的对象、系统构建的对象,甚至它自己。这也表明函数是自举的(构造自身的能力)。也间接决定了Function的[[call]]和[[constructor]]的逻辑是一样的。复制的代码如下:函数Foo(){ };var Foo=new Foo();//foo是Foo的构造函数alert(Foo的Foo实例);//true //但是Function不是foo的构造函数alert(foo instance of Function);//false //Function是foo的构造函数alert(Function的Foo实例);//true上面的代码解释了foo及其构造函数Foo和Foo的构造函数Function之间的关系。(具体原理见《功能与对象》记忆关系图。)对象是顶层对象,所有对象都将继承对象的原型。但是,您还应该知道,Object也是Function对象,因此对象是由函数构造的。(关于对象的理论不多)函数和对象,这是本文的重点,非常重要!复制代码如下:alert(函数的函数实例);//真报警(对象的函数实例);//真报警(函数的对象实例);//true function Foo(){ };var Foo=new Foo();alert(Foo instance of Foo);//真报警(foo instance of Function);//假警报(foo instance of Object);//真告警(Foo instance of Function);//真告警(Foo instance of Object);//真实你能理解这些答案吗?恭喜你,你已经理解了Javascript的本质。然后我们来看看Object和Function的实际关系:。
看图前请先看两篇关于函数对象和原理实例的文章,否则记忆图片很难理解。这里我稍微解释一下内存图:function对象的构造过程在function对象一文中有提到,而本文中提到函数是自举的,所以function对象Foo的构造过程和Function对象Function的构造过程是一样的。所以在图中突出显示,我用“|”把它们分开,表示它们的构造过程是一样的。根据实例理论和记忆图,可以推导出上述所有语句都有正确的结果。这里就不一一讲了,让读者知道。如果你看不懂这个复杂的记忆图,可以看下面的说明图来帮助你理解:。
注意:代码的实际执行流程并不完全是这个图描述的那样,也就是说这个图是有问题的(可以说是错误的),不能解释为什么Function的Function instanceof为真。但是很容易理解函数和对象之间的关系。
版权声明:理解Javascript _ 09 _函数和对象是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。