原型和原型链是JS实现继承的方式。
除了箭头函数,其它函数身上都有prototype属性。当该函数作为构造函数生成对象时,新生成的对象会继承其prototype中的方法(即 obj.__proto__ === fn.prototype)。
function Person() {
}
console.log(
Person.__proto__ === Function.prototype,
Object.__proto__ === Function.prototype,
Function.__proto__ === Function.prototype,
)
// true true true
console.log(
Function.prototype.__proto__ === Object.prototype,
Object.prototype.__proto__ === null,
Array.prototype.__proto__ === Object.prototype,
)
// true true true
Person, Object, Function 是函数,由 Function 构造而来。
Function.prototype,Array.prototype 是对象,由 Object 构造而来。
原型链的查找方法:xxx.prototype 是一个普通对象,yyy.__proto__ 找的是yyy的构造函数。
网友评论