面向对象编程思想

Posted cnblogxc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程思想相关的知识,希望对你有一定的参考价值。

面向对象的基本思想
 
1、什么是面向对象
  “面向对象的方法主要是把事物给对象化,包括其属性和行为。
   是一种编程思想,编程思路,代码的书写格式
2、构造函数的使用
  创建对象的方法,有两种
            字面量  const obj = {} 
            构造函数  const obj = new Object()
            这个构造函数,就是javascript程序定义好的构造函数,我们直接使用就可以了
            所谓的构造函数,实际也是一种函数
 
  构造函数和普通函数的区别
             1、构造函数一定要和 关键词 new 一起使用
                    new 关键词具有特殊的功能,
                    会自动的给 构造函数中 定义一个对象,并且返回这个对象
                    我们只要对这个对象设定属性,设定方法就可以了
             2、构造函数为了和其他函数区别
                   语法规范规定,构造函数,函数名称,第一个字母必须大写,使用大驼峰命名法
             3、构造函数,给对象定义属性和方法的语法,与一般函数不同
 
3、自定义构造函数
  技术图片
  
  注意:1、函数名称要使用大驼峰命名法
         2、自定义构造函数中,不要定义对象,和 定义return
            new 关键词会执行,如果定义了,会产生冲突
 
  总结
        new 的作用
        1、在构造函数中,自行创建一个对象,并且返回这个对象
        2、因为new 关键词,创建了对象,此时,构造函数中的this,才会指向这个对象
          也就是将来生成的实例化对象
        3、所有的构造函数中,this的指向,都是将来通过这个构造函数生成的实例化对象
 
  
4、prototype是什么?
  prototype 是每个函数本身就具有的一个特殊的属性
   可以在这个特殊的属性中,存储 数据和函数
  技术图片
 
5、proto是什么
  JavaScript中,每一个对象,都有一个 __proto__
          实例化对象的 __proto__  就是指向的 构造函数中, prototype 这个属性
          通过构造函数,生成的实例化对象,这个实例化对象, __proto__ 存储的地址
          就是生成这个实例化对象的构造函数的 prototype 的地址
          实例化对象的 __proto__ 实际上 就是指向 构造函数的 prototype
 
  总结
          函数有一个 属性 叫 prototype 
              其中可以定义,存储, 属性属性值 函数名称函数等等数据
              定义在 prototype 中的内容 就是 函数自己本身的数据

          对象有一个 属性 叫 __proto__
          构造函数,在生成实例化对象时,会将自己 prototype 这个空间的地址
          赋值给 实例化对象 的 __proto__ 来存储
          实际上 构造函数的 prototype 和 生成的实例化对象的 __proto__ 指向的是同一个 存储空间
          可以相互调用数据
 
 5、 原型对象、原型属性、原型链
 
   (1)、原型对象
                每一个函数,天生都有一个 prototype 属性,称为原型对象
        是一个专门用来存储数据,函数等内容的空间

          (2)、原型属性
                每一个对象,天生都有一个 __proto__ 属性,称为原型属性
        实例化对象的原型属性,指向的创建实例化对象的构造函数的 prototype

                函数,数组,等,JavaScript中的数据类型
        实际存储的形式都是一个对象,都会有 __proto__ 属性
        在JavaScript中,可以用对象的形式存储任何数据类型

          (3)、原型链
                   所谓的原型链,就是所有相互关联的变量,使用 __proto__ 属性串联起来
         调用数据数据时,会通过 __proto__ 将所有相互关联的 变量 串联
         只要有一个变量中 有相应的属性,就会调用成功
 
6、面向对象编程的优点
        优点与函数的优点类似
        高内聚  低耦合
        高内聚 : 将所有需要的程序,都定义封装在对象内
                对象中存储所有需要的属性,所有需要的方法
        低耦合 : 尽量减少特殊程序的执行
 
7、面向对象的基本思想
  基本思路就是,创建一个对象,给这个对象,添加上属性和属性值,还有函数等方法
       之后通过操作这个对象,来完成需要的效果

        先通过一个函数的方法,来创建对象
  
   function createObj(){
            // 创建对象
            const obj = {};

            // 给对象添加属性和属性值
            obj.name = ‘张三‘;
            obj.age = 18;
            obj.addr = ‘北京‘;
            obj.sex = ‘男‘;

            // 给对象添加方法
            obj.funNameAge = function(){
                console.log(this.name, this.age);
            }

            obj.funNameAddr = function(){
                console.log(this.name, this.addr);
            }

            obj.funSexAge = function(){
                console.log(this.sex, this.age);
            }

            obj.funAll = function(){
                console.log(this.name, this.age,this.sex,this.addr);
            }

            // 返回这个创建好的对象
            return obj;
        }

        // 调用函数,函数创建对象,并且作为返回值
        // 变量中存储的就是函数创建的对象
            const obj = createObj();
        
            // 可以通过调用obj中存储的对方的方法,来实现功能
            obj.funAll();          // 执行结果 张三 18 男 北京
 
总结:
  
   1、基本概念
                所谓的面向对象编程,是一种编程思想和书写方式方法

                简单理解:
                    之前是将程序,封装在函数内,设定参数和返回值
                    现在是将程序,封装在对象内,设定对象的属性和方法

            2、构造函数和实例化对象
                构造函数:就是专门定义生成对象的函数
                        必须和关键词 new 配合使用
                实例化对象:本质上就是一个对象,只不过是通过构造函数生成的
            
            3、原型链
                原型对象:
                    每一个 函数 都有一个 prototype
                    本质上一个专门存储 数据 和 方法(函数) 的空间

                原型属性:
                    每一个 对象 都有一个 __proto__
                    实例化对象的 __proto__ 指向的 就是 生成这个实例化对象的构造函数的 prototype

                原型链:
                    通过 __proto__ 将相互关联的数据,串联起来,可以相互访问数据的功能,就称为原型链

                    在JavaScript中任意一个数据类型,都可以看做是对象,都有 __proto__

                    举例:
                        定义 构造函数时, 将 实例化对象的方法,定义在构造函数的 prototype 中
                        生成 实例化对象 时 对象本身只有定义在 构造函数中的属性
                                          没有定义在 prototype 中的方法
                        在 执行 实例化对象 时, 要调用方法,是通过原型链 也就是 通过 __proto__ 
                        找到 构造函数 的 prototype 空间 并且调用其中 存储的方法

            4、构造函数
                构造函数为了和普通函数区别,一般是将所有函数名称单词是的首字母大写
                不大写也能执行,但是不符合语法按规范
                
                定义构造函数:
                    在函数内,定义实例化对象的方法,通过的是this来指定定义实例化对象的属性
                        this.属性 = 属性值
                    在 prototype 中 定义 实例化对象的方法
                        构造函数.prototype.函数方法名 = function(){}

                使用,调用构造函数,必须和 new 关键词一起使用
           
      
 
                                              逆战班
 
 
  

以上是关于面向对象编程思想的主要内容,如果未能解决你的问题,请参考以下文章

面向对象编程思想 OOP

编程思想 _用Minercraft来讲解面向过程与面向对象

面向对象思想&封装

面向对象编程简介

面向对象编程思想

面向对象编程思想