学习目标
1.能够使用构造函数创建对象
2.能够说出原型的作用
3.能够说出访问对象的规则
4.能够使用ES5新增的一些方法
1.1 构造函数和原型
创建对象的三种方式
1.对象字面量 let obj = {}
2,new Object() var obj = new Object()
3.自定义构造函数 function Guan() {console.log(123)} let guan = new Guan()
构造函数是一中特殊的的函数,主要用来初始化对象,即为对象成员变量赋初始值,她总与new一起使用。我们可以把对象中的一些公告属性和方法抽取出来,然后封装到这个函数里面。
new 在执行时会做4件事情
1.在内存中创建一个新的空对象
2.让this 指向这个新对象
3.执行构造函数里面的代码,给这个新对象添加属性和方法
4.返回这个新对象(所有构造函数里面不需要return)
实例成员就是构造函数内部通过this添加的成员 ,只能通过实例化的对象来访问 ,不能通过构造函数访问实例成员
静态成员只能通过构造函数来访问,不能通过对象来访问
function Guan(name,age) { this.name = name this.age= age // 实例成员 构造函数内部通过this添加的成功 this.say = function () { console.log('我会唱歌') } } Guan.sing = '唱歌' // 静态成员只能通过构造函数本身添加成员 let gsj = new Guan('guan',19)
构造函数的原型 prototype
每一个构造函数都有一个prototype 属性 一般情况下,公共的属性点定义在构造函数里面 方法放在原型对象上
对象原型 __proto__
对象都会有一会属性__proto__指向构造函数的prototype原型对象,之所有我们原型对象可以使用构造函数的peototype原型对象的属性和方法,就时因为对象的有__prpto__原型的存在。
- __proto__对象原型和原型对象prototpe 是等价的