String构造函数的原型是什么(String .__ proto__)?

时间:2017-12-04 21:21:46

标签: javascript inheritance

var mString = new String('A');

console.log(typeof mString); // object

console.log(mString instanceof String); // true

console.log(mString instanceof Object); // true

console.log(mString.__proto__ === String.prototype); // true

console.log(mString.__proto__.__proto__ === Object.prototype); // true 

现在,为什么

console.log(String.__proto__.__proto__ === Object.prototype); // true

而不是

console.log(String.__proto__ === Object.prototype); // false

走上原型链?

String和Object原型之间有什么关系?

2 个答案:

答案 0 :(得分:2)

contains

它是一个函数的原型,因为String是一个构造函数。

答案 1 :(得分:-1)

当您使用instanceof Object时,表示该变量是Object或"扩展" Object

如上所述here " instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。"

因此mString.__proto__不等于Object.prototype,但Object.prototype确实在原型链上更高,这就是它们不相等的原因。 String原型继承了Object原型。