三个属性
- 构造函数的prototype
- 原型对象的constructor
- 实例的__proto__
首先每个构造函数都具有一个原型对象, 每个原型对象同时有一个constructor指向构造函数
//一个构造函数
function Person() {
this.name = "wangturing";
this.age = 23;
}
//可以通过prototype进行访问
console.log(Person.prototype);
//原型对象constructor指向构造函数
console.log(Person.prototype.constructor);
通过构造函数我们可以创建对象, 这个对象的__proto__属性指向构造函数的原型对象
function Person(name, age) {
this.name = name;
this.age = age;
}
var xiaoming = new Person("wangturing", 12);
//返回true
console.log(xiaoming.__proto__ === Person.prototype);
所有的原型对象的__proto__指向Object()函数的原型对象。
两个比较重要的函数:
首先第一个函数叫做: Function()
它是所有构造函数的构造函数, 也就是说所有的构造函数都是Function的实例, 所以所有的构造函数的__proto__属性都是指向Function()
的实例的。
function Person(name, age) {
this.name = name;
this.age = age;
}
//返回true
console.log(Person.__proto__ == Function.prototype);
注意Function的__proto__属性指向Function的原型对象, 原型对象的construct指向Function。
第二个函数名字叫做:Object()
, 它的原型对象Object是所有原型对象的__proto__的指向
var b = new Person("wyz", 123);
b.__proto__.__proto__ === Object.prototype;
Object()的prototype指向的是Function的原型对象。
标签:关系,__,函数,proto,JavaScript,Person,原型,prototype,构造函数 From: https://www.cnblogs.com/zhengel/p/17031631.html