在JavaScript中创建别名的目的是什么?这个JavaScript语句做什么?

What is the purpose of creating aliases in JavaScript? What does this JavaScript statement do?

本文关键字:JavaScript 这个 什么 语句 创建 别名 是什么      更新时间:2023-09-26

我看到有几个JavaScript库在文件开头有这种语法。这条语句是什么意思,运行该语句后getClass的值是多少,为什么需要这样做?还有,开头的分号的目的是什么?

;(function (window) {
  // Convenience aliases.
  var getClass = {}.toString, isProperty, forEach, undef;
   // remaining function goes here
}

在ECMAScript 5中,对象有一个内部的[[class]]属性,根据8.6.2,它只能通过Object.prototype.toString:

访问

[[Class]] internal属性的值在内部用于区分不同种类的物体。注意这个规范没有为程序提供任何访问该值的方法,除了通过Object.prototype.toString(见15.2.4.2)。

{}.toString是通往Object.prototype.toString的捷径。

例如,getClass可以用来测试一个对象是否是一个Arguments对象:

getClass.call(obj) === "[object Arguments]"

getClass的值是多少,

{}.toString相同。

为什么需要

?

它不是。注释说这是一个方便的别名。

还有,开头的分号的目的是什么?

因此,如果脚本与另一个脚本连接,并且前一个脚本在其最后一条语句后没有包含;,则不会导致错误。