目录
前言:
什么是原型链?
原型链:就是实例对象和原型对象之间的链接,每一个对象都有原型,原型本身又是对象,原型又有原型,以此类推形成一个链式结构.称为原型链
1.数字number
2.日期原型链date
3.math()原型链
4.boolean原型链
5.string原型链
var str = new String()
//他就是一个字符串实例 化 对象
console.log(str) //String {''}
console.log(str.__proto__) //String {'', constructor: ƒ, anchor: ƒ, at: ƒ, big: ƒ, …}
// str 实例化对象的原型对象 的原型对象就是 字符串
console.log(str.__proto__.constructor) // ƒ String() { [native code] }
// str 的实例化对象的原型对象 就是构造函数的原型对象
console.log(str.__proto__ == String.prototype) //true
//str的原型对象 的原型对象 的原型对象 也是obj
console.log(str.__proto__.__proto__.constructor) //ƒ Object() { [native code] }
// 实例化对象的 原型对象的 原型对象的 原型对象 是 null (万物皆空!)
console.log(str.__proto__.__proto__.__proto__) //是 null
6.数组原型链
<script>
// 数组的原型链!
var arr = new Array()
// 他就是一个构造函数 有Prototype属性 原型对象就是 Array
console.log(arr) // Prototype : Array( 0 )
console.log(arr.__proto__.constructor) // ƒ Array() { [native code] }
//构造出来的实例化对象的 原型对象 等于 构造函数的 原型对象
console.log(arr.__proto__ == Array.prototype) //true
// 实例化对象的 原型对象的原型对象的原型对象是Object
console.log(arr.__proto__.__proto__.constructor) //ƒ Object() { [native code] }
// 实例化对象的 原型对象的 原型对象的 原型对象 是 null (万物皆空!)
console.log(arr.__proto__.__proto__.__proto__) //是 null
7.对象原型链
// 构造函数
function Person(name,age){
this.name = name;
this.age = age;
}
// 原型对象
Person.prototype.eat = function(){
console.log("我要吃红烧肉")
}
// 实例对象
var p1 = new Person("jack",18)
// 检查p1原型
console.log( p1.__proto__.constructor )//Person
console.log( p1.__proto__ === Person.prototype )//true
// 检查p1原型的原型
console.log( p1.__proto__.__proto__ )//Object
console.log( p1.__proto__.__proto__ == Object.prototype )//true
// 检查p1原型的原型的原型
console.log( p1.__proto__.__proto__.__proto__ )
// console.log( p1.__proto__.__proto__ == Object.prototype )//true
总结
万物皆对象,原型链万物皆空