原型链
1、自定义函数
构造函数User的实例person的隐式原型指向构造函数原型
function User() {
this.age = 18;
this.sex = '男'
}
const person = new User()
console.log(person.__proto__ === User.prototype); // true
2、Object函数 (js内置构造函数)
1、类似Object这样的内置构造函数还有很多,如Date、Array、String等
2、构造函数Object用于创建普通对象,其实例隐式原型指向构造函数Object原型
3、自定义函数原型也是一个对象,其隐式原型指向构造函数Object原型
const o = new Object()
o.age = 18;
o.sex = '男'; // 等同 const a = { age:18, sex:'男' }
console.log(o.__proto__ === Object.prototype); // true
const person = new User()
console.log(person.__proto__ === User.prototype); // true
const person2 = new Object()
console.log(User.prototype.__proto__ === Object.prototype); // true
3、Function函数
1、由Function函数实例化出来的函数也是对象,其隐式原型指向Function原型
2、所有的构造函数(如Object、自定义函数、Array)也是对象,他们的隐式原型全都指向Function的原型;
const fuc = new Function()
console.log(fuc.__proto__ === Function.prototype); // true
console.log( Object.__proto__ === Function.prototype); // true
4、原型链关系
1、查找关系:查找一个属性在不在某个对象上,先找对象实例,实例身上有该属性则先找自身,实例身上没有则从构造函数的原型上找;
2、关系链:
a、自定义函数实例的隐式原型指向自定义函数原型;
b、自定义函数原型也是一个对象,其隐式原型指向Object原型;
c、Object原型又是一个对象,其隐式原型指向null;
d、所有的构造函数(如Object、自定义函数、Array)也可以看做对象,他们的隐式原型全都指向Function的原型;
e、所有构造函数的原型也是实例对象,其隐式原型指向Object原型
f、Function的隐式原型指向Function的原型(特殊)
5、原型链图


被折叠的 条评论
为什么被折叠?



