<script>
/*
1.原型链 : 每一个实例对象都有自己的原型,而原型也是对象,也有自己的原型。以此类推,形成链式结构,称之为原型链。
2.原型链访问规则 :就近原则
* 对象优先访问自己的成员,自己没有就找原型的,如果原型也没有,就找原型的原型。以此类推,直到原型链终点null. 如果还找不到, 属性则获取undefined,方法则报错undefined is not a function
</script>
内置对象原型链
<script>
/*
1.原型链 : 每一个实例对象都有自己的原型,而原型也是对象,也有自己的原型。以此类推,形成链式结构,称之为原型链。
2.原型链访问规则 :就近原则
* 对象优先访问自己的成员,自己没有就找原型的,如果原型也没有,就找原型的原型。以此类推,直到原型链终点null. 如果还找不到, 属性则获取undefined,方法则报错undefined is not a function
3.原型链作用: 继承
* js 用 ‘原型链’ 实现面向对象继承
* 了解: 几乎所有的框架底层都是用原型链实现继承
*/
//数组实例对象
let arr = [10,20,30]// new Array(10,20,30)
//1.查看数组的原型 : 2行代码
console.log( arr.__proto__.constructor )//Array
console.log( arr.__proto__ === Array.prototype )//true
//2.查看数组的原型的原型
console.log( arr.__proto__.__proto__.constructor )//Object
console.log( arr.__proto__.__proto__ === Object.prototype )//true
//字符串实例
let str = 'abc'// new String('abc')
//查看str的原型
console.log( str.__proto__.constructor )//String
console.log( str.__proto__ === String.prototype )//true\
//2.查看数组的原型的原型
console.log( str.__proto__.__proto__.constructor )//Object
console.log( str.__proto__.__proto__ === Object.prototype )//true
</script>