js万物皆对象,要带着观察对象的眼观去看待每一个函数、变量。
为什么要用到原型?
Es6以前,js中没有如ooa编程当中的class,但是要用到类,怎么办呢,构造函数就应运而生,但是构造函数里面添加方法,发现他们的内存地址并不一样,也就是说每实例一个对象,就要开辟一个存储空间,这样是非常浪费内存的
如:
function People(name, age) {
this.name = name;
this.age = age;
this.show = function(){
console.log('我的名字是'+name);
}
}
var boy = new People('kejin', '18');
var girl = new People('lucy', '20');
console.log(boy.show===girl.show); //false
此时要用到原型来解决此问题
function People(name, age) {
this.name = name;
this.age = age;
}
People.prototype.get = function() {
console.log('我的名字是'+name);
}
var boy = new People('kejin', '18');
var girl = new People('lucy', '20');
console.log(boy.show===girl.show); //true
所以js在对象里添加方法一般都是通过原型
包括Window、Document、Audio、Promise等
有时候不知道他们的接口是什么,可以通过 console.dir()来获取
比如Promise