instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
引自 MDN
但是MDN中如下代码:
var simpleStr = "This is a simple string";
var myString = new String();
var newStr = new String("String created with constructor");
var myDate = new Date();
var myObj = {};
simpleStr instanceof String; // returns false, 检查原型链会找到 undefined
我经过测试发现:
simpleStr.__proto__ === String.prototype // true
Object.getPrototypeOf(simpleStr) === String.prototype //true
String.prototype
明明就在simpleStr的原型链上啊, 但是 simpleStr instanceof String;
返回了false...
js真坑, 唯一一种解释就是,字面量是没有原型的。 但是为何此处Object.getPrototypeOf(simpleStr)
能获得原型。。
网友评论