官方描述: 函数对象被创建时,Function构造器产生的函数对象会运行这样一些代码:
this.prototype = {constructor: this};
1.prototype
是函数对象的属性,普通对象没有该属性:
2.函数对象和普通对象都有__proto__
属性,它指向该对象原型的prototype
构造函数、实例与原型关系图
function Person() {}
let person = new Person();
// 在所有实现中都无法访问,以下的访问方式已被弃用。
console.log(Person.__proto__ === Function.prototype);
console.log(person.__proto__ === Person.prototype);
// 判断__proto__的指向
console.log(Object.prototype.isPrototypeOf(person));
console.log(Object.getPrototypeOf(person) === Func.prototype); // 推介
// 判断Func原型的constructor指向
console.log(Person.prototype.constructor === Person)
// Person和person中的constructor属性指向它的构造函数
console.log(person.constructor === Person);
console.log(Person.constructor === Function);
网友评论