首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >现代toString

现代toString
EN

Stack Overflow用户
提问于 2012-08-29 22:29:23
回答 2查看 146关注 0票数 4

Modernizr为什么要执行以下操作:

代码语言:javascript
复制
toString = {}.toString,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 22:32:50

它正在抓取Object.prototype.toString方法的本地副本,这将允许它在脚本中进行小的速度改进。这还允许它测试toString方法是否存在。

关于评论:

每一个名称解析都是有代价的,在查找时间(局部变量、全局变量、原型链接)和创建(闭包范围的变量)方面,因此映像以下代码:

代码语言:javascript
复制
var values = // Create some object here.

for (var i = 0; i < count; i++) {
  console.log(values[i].toString());
}

对于look的每次迭代,我们必须解析values变量,遍历原型链以识别成员toString,然后执行该成员。

以上面的例子为例,我们可以执行以下操作:

代码语言:javascript
复制
var toString = {}.toString,
    values = // Create some object here.

for (var i = 0; i < count; i++) {
  console.log(toString.call(values[i]));
}

或者更进一步:

代码语言:javascript
复制
var toString = {}.toString,
    log = console.log,
    values = // Create some object here.

for (var i = 0; i < count; i++) {
  log.call(console, toString.call(values[i]));
}

轻量级应用程序不会从中受益太多,但大型框架,如jQuery等,可以显著提高脚本性能。我相信IE就是一个这样的浏览器,这些小的改进可以帮助相当多。

票数 7
EN

Stack Overflow用户

发布于 2012-08-29 22:32:34

它检查在给定环境下是否存在默认情况下定义在对象上的toString属性。它不会对新的对象()执行此操作,因为该对象本身可能不是在环境中定义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12180299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档