JavaScript中的3个关系, 2个函数

image


三个属性

  1. 构造函数的prototype
  2. 原型对象的constructor
  3. 实例的__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的原型对象。

posted @ 2023-01-29 22:29  wangturing  阅读(52)  评论(0)    收藏  举报