面向对象是一种编程思想,是对面向过程的高度封装。
创建对象
自定义构造函数
构造函数:凡是和new关键字结合使用的函数,就叫做构造函数
//例如:内置构造函数:new Array()
自定义构造函数:
就是我们也要和new关键字连用
就是自己定义名称
自定义构造函数首字母要大写
new关键字做了什么?
自动创建了空对象
用this指向空对象
返回空对象
自定义构造函数中不要写return
如果写了return 返回的是基本数据类型,写了白写
如果是返回的复杂数据类型,new或者自定义构造函数没有意义
自定义构造函数中的this指向,new出来的那个对象
new的时候会把this指向这个对象,并且自动返回这个对象,这个对象给了前面的变量
所以自定义构造函数中的this指向的就是new出来的那个对象
概念:
属性:在构造函数中值不是函数的
方法:在构造函数中值是函数的
方法定义在函数体内不好,因为函数是一个复杂数据类型,每次实例化的时候都需要创建,会消耗内存。
原型对象和对象原型
原型对象:
是构造函数/函数天生自带的属性,这个属性是一个对象数据类型,叫做prototype。
对象原型:
是对象天生自带的属性,这个属性叫做__proto__,这是一个非标准属性,只是提供一个指向,不能拿来赋值,指向的是构造函数的原型对象。
对象的访问:
当需要访问对象的数据时,首先在实例对象自己身上查找,如果有就停止查找,否则继续向所属构造函数的原型对象上去查找,如果有就停止查找....
//一般我们把属性定义在构造函数里,把方法定义在所属构造函数的原型对象上,都是供实例使用的。
构造函数中的this
构造函数中的this指向实例
构造函数的原型对象的方法中的this也指向实例