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

时间:2015-08-13 15:38:04

标签: javascript

我见过几个在文件开头有这种语法的JavaScript库。这个语句意味着什么,运行此语句后getClass的值是什么,为什么需要它?另外,分号开头的目的是什么?

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

   // remaining function goes here
}

2 个答案:

答案 0 :(得分:2)

  

运行此语句后getClass的值是什么

{}.toString相同。

  

为什么需要这个?

不是。评论说这是一个方便的别名。

  

另外,分号开头的目的是什么?

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

答案 1 :(得分:2)

在ECMAScript 5中,对象具有内部[[Class]]属性,根据8.6.2,只能通过Object.prototype.toString访问:

  

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

{}.toStringObject.prototype.toString的快捷方式。

例如,getClass可用于测试对象是否为Arguments object

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