"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) 浏览器之间存在大量DOM/CSS不一致.但浏览器之间存在多少核心JS差异?最近让我失望的是,在Firefox中,setTimeout回调函数会传递一个额外的参数(https://developer.mozilla.org/en/window.setTimeout).
此外,现在浏览器正在实现新的功能(例如,Array.map),如果你试图编写必须适用于所有浏览器的代码(甚至回到IE6),那么知道你能够/不能使用它会让人感到困惑.
是否有一个网站干净地组织这些类型的差异?
据我所知,每个字符串都是Javascript中的一个对象.尽管如此,它"无法正常工作",正如我所期望的那样:
var a="abc"; //here we get a new string object
a.b = 123; //I seem to declare a property "b" of that object
alert(a.b); //alerts "undefined"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试以"错误的方式"定义字符串,一切都按预期工作
var a=new String("abc"); //
a.b = 123;
alert(a.b); //alerts "123"
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
好的,首先,我不会寻求一种方法来转换Object为String.
但我面临这样的问题:
String.prototype.foo = function() {
return this;
};
var rawString = "abcde";
var fooString = "abcde".foo();
console.log(typeof(rawString) + ': ', rawString);
console.log(typeof(fooString) + ': ', fooString);
Run Code Online (Sandbox Code Playgroud)
或jsfiddle你更喜欢.
还附上了截图:

正如你所看到的,我在原型方法中几乎什么也没做foo,我只是return this.
但结果typeof完全不同
为什么是这样?我如何才能返回abcde,而吴丹{0: "a"...}?
谢谢!