1. 任何对象都有一个__proto__属性;---指向构造函数的原型对象
  2. 任何函数都有一个prototype属性;---构造函数的原型对象

以上说明还是不难理解的,比较坑爹的是js中万物皆对象,函数也是对象,所以函数也有一个__proto__属性!!!但是普通的对象没有!

funtion Person(name,age){
    this.name = name;
    this.age = age;
}
//结合Java中的概念,定义一个类Person即js中的函数;
//以下定义Person类的实例对象
var stu = new Person("student",20);
//可以这么理解实例对象的__proto__属性,__proto__就是获取实例对象的所属类class的原型对象,即构造函数的原型对象
console.log(stu.__proto__ === Person.prototype); //true

//定义Person函数的方式也可以用以下方式
var Person = new Function("参数1","参数2","函数体");
//所以Person即为Function的一个实例对象
console.log(Person.__proto__ === Function.prototype); //true

//以上 谁是谁的实例对象 也可以通过new来判断

//实例对象通过__proto__属性获取构造函数的原型对象(获取类class),即构造函数名.prototype,那么反过来说通过构造函数名.prototype也就获取了实例对象名.__proto__
console.log(Person.prototype === stu.__proto__); //true

//Object是所有类的父类,所以Function类的父类指向Object
console.log(Object.prototype === Function.prototype.__proto__); //true

//var Function = new Function();
console.log(Function.__proto__ === Function.prototype); //true

已注销
5 声望0 粉丝