相关疑难解决方法(0)

为什么instanceof对某些文字返回false?

"foo" instanceof String //=> false
"foo" instanceof Object //=> false
true instanceof Boolean //=> false
true instanceof Object //=> false
false instanceof Boolean //=> false
false instanceof Object //=> false

// the tests against Object really don't make sense
Run Code Online (Sandbox Code Playgroud)

数组文字和对象文字匹配......

[0,1] instanceof Array //=> true
{0:1} instanceof Object //=> true
Run Code Online (Sandbox Code Playgroud)

为什么不是所有人呢?或者,他们为什么不呢?
而且,它们是什么样的呢?

在FF3,IE7,Opera和Chrome中也是如此.所以,至少它是一致的.


错过了一些.

12.21 instanceof Number //=> false
/foo/ instanceof RegExp //=> true
Run Code Online (Sandbox Code Playgroud)

javascript instanceof literals

273
推荐指数
5
解决办法
9万
查看次数

JavaScript中的字符串原语和String对象有什么区别?

取自MDN

字符串文字(用双引号或单引号表示)和从非构造函数上下文中的String调用返回的字符串(即,不使用new关键字)是原始字符串.JavaScript会自动将基元转换为String对象,因此可以对原始字符串使用String对象方法.在要在原始字符串上调用方法或发生属性查找的上下文中,JavaScript将自动包装字符串原语并调用方法或执行属性查找.

因此,我认为(逻辑上)字符串基元上的操作(方法调用)应该比字符串对象上的操作慢,因为任何字符串基元method在应用于字符串之前都会转换为字符串对象(额外工作).

但在这个测试案例中,结果却相反.所述码块1的运行速度比较快的块-2代码,两个代码块在下面给出:

代码块-1:

var s = '0123456789';
for (var i = 0; i < s.length; i++) {
  s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)

代码块-2:

var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
    s.charAt(i);
}
Run Code Online (Sandbox Code Playgroud)

结果在浏览器中有所不同,但代码块-1总是更快.任何人都可以解释一下,为什么代码块-1比代码块-2快.

javascript string object

106
推荐指数
7
解决办法
4万
查看次数

标签 统计

javascript ×2

instanceof ×1

literals ×1

object ×1

string ×1