
前置知识看下面
按顺序解释下:
- Function构造函数的prototype指向Function的原型对象,Function函数又是对象,Function的proto指向创造她的构造函数的原型对象,这个比较特殊,因为Function是所有构造函数的祖先,所以Function的proto===Function的原型对象
- Function创造了Object,所以Object的proto===Function的原型对象
- Function的原型对象也是对象,对象的proto指向了Object原型对象
- Object又是构造函数,所以Object的prototype===Object原型对象,Object原型对象又是对象,所以Object原型对象.proto===null,终结了
以上是Function函数和Function函数创造出来的Obeject函数之间的关系,以及Obeject函数和Obeject原型对象之间的关系
Function不仅可以创造Object函数,还可以创造普通构造函数Person,而Person也可以创造对象obj1,下面说这些之间的关系。
- Function 创建了Person,所以Person.proto===Function 的原型对象,
- 构造函数有自己的原型对象,所以Person的prototype===Person的原型对象
- Person也可以创造对象obj1,所以obj1__proto__===Person的原型对象
- Person的原型对象也是对象A,对象A的proto指向了Object原型对象
前置知识
1.所有的构造函数都有一个prototype属性, 所有prototype属性都指向自己的原型对象
2,所有的原型对象都有一个constructor属性, 所有constructor属性都指向自己的构造函数
3.所有函数都是Function构造函数的实例对象
4.所有函数都是对象, 包括Function构造函数
5.所有对象都有proto属性
6.普通对象的proto属性指向创建它的那个构造函数对应的"原型对象"
7.所有对象的proto属性最终都会指向"Object原型对象"
8."Object原型对象"的proto属性指向NULL
function Person(myName, myAge) {
this.name = myName;
this.age = myAge;
}
let obj1 = new Person("lnj", 34);
console.log(Function.prototype.__proto__);
console.log(Person.prototype.__proto__);
console.log(Function.prototype.__proto__ === Person.prototype.__proto__);
console.log(Function.prototype.__proto__ === Object.prototype);
console.log(Person.prototype.__proto__ === Object.prototype);

网友评论