Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(v) { this.v=v; }; var p = new Person("aa"); //以上代码是通过构造函数创建对象; //其过程为: //1.创建一个新的对象 //2.将构造函数的作用域赋给新的对象(因此其中的this就指向了这个函数) //3.执行构造函数中的代码(为这个新对象添加属性) //4.返回新对象 //因此p的类型为object,而不是function,它不会继承Function的原型属性 //因object为所有对象的基类,所以,p可以访问得到Object的原型的属性 console.log('p.a: ' + p.a); // p.a: undefined console.log('p.b: ' + p.b); // p.b: b
1.对象有属性_proto_,指向该对象的构造函数的原型
2.方法除了有_proto_,还有prototype,prototype指向该方法的原型
3.函数实例的原型是object类型,构造函数是function类型