原型链?!

//String
var a = 'sss'
a.__proto__ === String.prototype  // 为 true,a没有prototype
a.__proto__.__proto__  ===  String.prototype.__proto__    // 为 true
String.prototype.__proto__  ===  Object.prototype  // 为 true
String.__proto__ === Function.prototype  // 为 true
var b= new String('sss')
b.__proto__ === String.prototype   // 为 true
b.__proto__.__proto__  ===  Object.prototype   // 为 true

//Boolean
var c = true
c.__proto__ === Boolean.prototype // 为 true,c没有prototype
c.__proto__.__proto__ === Boolean.prototype.__proto__   // 为 true
Boolean.prototype.__proto__ === Object.prototype // 为 true
var d= new Boolean(false) //生成 false 值
d.__proto__ === Boolean.prototype   // 为 true
d.__proto__.__proto__ ===  Boolean.prototype.__proto__    // 为 true
Boolean.prototype.__proto__ ===  Object.prototype   // 为 true

//Number
var e = 111
e.__proto__ === Number.prototype // 为 true,e没有prototype
e.__proto__.__proto__ === Number.prototype.__proto__   // 为 true
Number.prototype.__proto__ === Object.prototype // 为 true
var f = new Number(222)
f.__proto__ === Number.prototype   // 为 true
f.__proto__.__proto__ ===  Number.prototype.__proto__    // 为 true
Number.prototype.__proto__ ===  Object.prototype   // 为 true

//Object
var object = {}
object.__proto__ ===  Object.prototype  // 为 true,注意 object 为小写
Object.__proto__ ===  Function.prototype  // 为 true
Object.prototype.__proto__  === null  // 为 true

//Function
var fn = function(){}
fn.__proto__ === Function.prototype  // 为 true
fn.__proto__.__proto__ === Object.prototype // 为 true
Function.__proto__ === Function.prototype // 为 true
Function.prototype.__proto__ ===  Object.prototype // 为 true

//Array
var array = []
array.__proto__ ===  Array.prototype // 为 true
array.__proto__.__proto__ ===  Object.prototype // 为 true
Array.__proto__ === Funciton.prototype  //为true

原型链1.png
原型链2.png

你可能感兴趣的:(原型链?!)