Js面向对象编程

·  阅读 143

1、什么是面向对象思想(编程思想角度)

(1)面向过程:关注的是解决问题的步骤

优点:在小型程序中代码量比较少,开发成本低

缺点:在构建大型项目是,代码逻辑不易捋顺、代码量大、代码编写繁琐,增加开发难度

(2)面向对象:关注的是解决问题所需要的对象(内容、角色),然后根据业务逻辑按一定的规则调用这些对象的相关功能、方法

优点:有弥补了面向过程编程思想的不足

缺点:在小型程序中不如面向过程思想灵活、方便

2、什么是面向对象语言(编程语言角度)

(1)什么是对象:万事万物皆为对象每一个具体的物品、实例就是一个对象:new Number()

(2)几个重要的概念:

 类

 对象(实例):属性(对象的特征)方法(对象的行为)

 封装

 继承

 多态
复制代码

3、js和面向对象的关系

Js是基于对象的语言,但是可以使用“面向对象”的思想让这个语言模拟java之类的面向对象语言

4、js如何创建对象?从一个“模板”(类、函数)那里创建出一个个具体的“东西”(对象)。如:从月饼模板中创建出月饼

  ①直接创建  
        优势:快捷、直观、方便

        劣势:需要创建多个对象时,代码冗余



  ②使用函数创建(工厂模式)     
        优势:解决了代码冗余问题

        劣势:无法区分该对象的类型(如:系统类型,number是Number()创建出来的,但是自定义类型无法获取到)


  ③使用构造函数(函数名首字母大写)

        优势:解决了获取对象类型的问题,使用构造函数创   建的对象自带一个constructor,通过该属性获取对象的类型(还可以使用instanceof检测对象是哪个类型的实例:(person instanceof Person),返回一个布尔值)

        劣势:内存占用空间有点大(相对来说)
复制代码

(2) 工厂模式和构造函数创建函数的区别

     1.在函数中没有显示的创建对象

     2.直接把属性、方法赋值给了this指针

     3.没有return语句

    4.使用构造函数创建出来的对象可以识别这个对象属于哪一种类型
复制代码

(3) 普通函数调用和构造函数调用的区别

    必须使用new操作符来创建出来的对象,如果像调用普通函数那样创建对象,就是在全局作用域中调用函数了,this指针会指向window对象
复制代码

5、如何在js中使用面向对象

 (1)访问对象的属性

       1.点语法(.)和[ ]访问某一个属性

            使用点语法访问属性,点后直接跟属性名

            使用[ ]访问属性,[ ]里属性字符串必须是字符串类型的数据 或 保存属性名字的字符串变量

    2.使用for.....in....遍历对象的所有属性

         for (var property in per1) {

            console.log(property+"="+ per1[[property]);

            }

   3.删除属性:delete box1.name;
复制代码
分类:
前端
标签: