目录
一、原型对象
1、原型对象
每个构造函数(类)都有一个原型对象(默认存在),该原型对象可以通过prototype属性进行访问。
(1)构造方法的原型对象是object类型
(2)prototype属性是默认存在的
(3)原型对象的作用:共享方法
function Person() {} // 定义函数
console.log(Person.prototype); // 输出结果:{constructor: ƒ}
console.log(typeof Person.prototype); // 输出结果:object
//利用原型对象共享方法
function Person(uname) {this.uname = uname;}
Person.prototype.sayHello = function() {
console.log('你好,我叫' + this.uname);
};
var p1 = new Person('张三');
var p2 = new Person('李四');
console.log(p1.sayHello === p2.sayHello); // 输出结果:true
p1.sayHello();// 输出结果:你好,我叫张三
p2.sayHello();// 输出结果:你好,我叫李四
二、原型链
1、访问对象的原型对象
(1)每个对象都有一个__proto__属性,这个属性指向了对象的原型对象。
(2)实例对象:使用new运算符创建的对象
(3)原型对象:通过构造方法名(类名).prototype得到的对象、、通过对象的__proto__属性得到的对象
class Person{
constructor(name,address){
this.name=name;
this.address=address;
}
sayHello(){
console.log("你好!");
}
}
console.log(Person.prototype);//输出Person类的原型
Person.prototype.showName = function(){
console.log("姓名",this.name);
}
Person.prototype.showAddress = function(){
console.log("地址:",this .address);
}
var p1 = new Person("王五","北京");
var p2 = new Person("赵柳","杭州");
p1.showName();
p1.showAddress();
console.log("p1的原型对象",p1.__proto__)//对象的原型对象
console.log("p2的原型对象",p2.__proto__)//对象的原型对象
//使用new运算符创建的对象为实例对象
//通过构造方法名(类名)。prototype得到的对象叫原型对象
//通过对象的__proto__属性得到的对象