8.面向对象

38 阅读2分钟

面向对象是一种编程思想,是对面向过程的高度封装。

创建对象

自定义构造函数
    构造函数:凡是和new关键字结合使用的函数,就叫做构造函数
    //例如:内置构造函数:new Array()
    
    自定义构造函数:
        就是我们也要和new关键字连用
        就是自己定义名称
        自定义构造函数首字母要大写
     new关键字做了什么?
        自动创建了空对象
        用this指向空对象
        返回空对象
    自定义构造函数中不要写return
        如果写了return 返回的是基本数据类型,写了白写
        如果是返回的复杂数据类型,new或者自定义构造函数没有意义
    自定义构造函数中的this指向,new出来的那个对象
        new的时候会把this指向这个对象,并且自动返回这个对象,这个对象给了前面的变量
        所以自定义构造函数中的this指向的就是new出来的那个对象
    概念:
        属性:在构造函数中值不是函数的
        方法:在构造函数中值是函数的
            方法定义在函数体内不好,因为函数是一个复杂数据类型,每次实例化的时候都需要创建,会消耗内存。

原型对象和对象原型

原型对象:
    是构造函数/函数天生自带的属性,这个属性是一个对象数据类型,叫做prototype。
对象原型:
    是对象天生自带的属性,这个属性叫做__proto__,这是一个非标准属性,只是提供一个指向,不能拿来赋值,指向的是构造函数的原型对象。
对象的访问:
    当需要访问对象的数据时,首先在实例对象自己身上查找,如果有就停止查找,否则继续向所属构造函数的原型对象上去查找,如果有就停止查找....
    //一般我们把属性定义在构造函数里,把方法定义在所属构造函数的原型对象上,都是供实例使用的。
构造函数中的this
    构造函数中的this指向实例
    构造函数的原型对象的方法中的this也指向实例