繁体   English   中英

Modernizr toString

[英]Modernizr toString

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

toString = {}.toString,

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

关于评论:

每个名称解析都有成本,在查找时间(本地,全局,原型链接)和创建(闭包范围变量),所以成像以下代码:

var values = // Create some object here.

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

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

以上面的例子为例,我们可以做到以下几点:

var toString = {}.toString,
    values = // Create some object here.

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

甚至更进一步:

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我相信是一个这样的浏览器,这些小改进可以帮助很多。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM