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
Now, why
console.log(String.__proto__.__proto__ === Object.prototype); // true
and not
console.log(String.__proto__ === Object.prototype); // false
when walking up the prototype chain?
What is between String and Object prototypes?
.__proto__getter. UseObject.getPrototypeOfinstead.