javascript - 关于typeof的一些疑问
PHPz
PHPz 2017-04-11 12:47:17
[JavaScript讨论组]

最近在看到JavaScript类型转换的时候看到一段文字描述(见下图),图中有段文字描述不是特别清楚:关于实现[[call]]的本地对象类型和没有实现[[call]]的本地对象类型,本地对象我了解,但是实现[[call]]没有实现[[call]]又有什么区别。希望知道的大神帮我科普一下。


]

PHPz
PHPz

学习是最好的投资!

全部回复(2)
伊谢尔伦

[[Call]]其实是 ECMAScript 中规定的一个内部属性,同样的属性还包括大家熟知的[[Prototype]],这些内部属性不能够被访问到,但却决定了 JavaScript 中所有对象、属性的表现。
[[Call]]属性在 ECMAScript 规范中被定义为一个方法,这个方法接受两个参数,一个是thisArgument,另一个是argumentsList,即函数this的指向及参数列表,这个属性其实就决定了函数调用时的行为。
因为 JavaScript 中是没有 function 类型的,所有的 function 其实本质上都是 object,所以 typeof 运算符判断一个 object 是不是 function 的依据就是其中是否包含[[Call]]属性。

如果要具体了解 ECMA-262 中关于[[Call]]的定义,可以参考 http://www.ecma-international...

高洛峰

Generally speaking, a function is a "subprogram" that can be called by code external (or internal in the case of recursion) to the function. Like the program itself, a function is composed of a sequence of statements called the function body. Values can be passed to a function, and the function will return a value.

In JavaScript, functions are first-class objects, because they can have properties and methods just like any other object. What distinguishes them from other objects is that functions can be called. In brief, they are Function objects.

MDN介绍function的开头的话,从里面不难看出function就是看能不能call判断的,可以推测实现[[Call]]就是说可以call吧。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号