美文网首页
关于对JavaScript(高级部分)的一些学习心得

关于对JavaScript(高级部分)的一些学习心得

作者: 深漂浪子 | 来源:发表于2019-06-03 15:20 被阅读0次

    一、对象和类型的关系:具体和抽象的关系

    二、面向对象与面向过程:

    1、区别及联系

    1)区别:面向对象(OO)侧重于具体的功能,注重的是整体和最后的结果;
    面向过程(OP)则是一种以事件为中心的编程思想,是侧重编程的过程,注重问题的解决部分。
    2)联系: 面向对象是将事物高度抽象化。面向过程是一种自顶向下的编程,面向对象必须先建立抽象模型,之后直接使用模型。通过面向过程来设计实现方法,最后实现面向对象.

    2、各自的优缺点:

    1)面向对象的优点:结构清晰,程序便于模块化,结构化,抽象化,更加符合人类的思维方式; 封装性,将事务高度抽象,便于流程中的行为分析,也便于操作; 易扩展,代码重用率高,可继承,可覆盖; 实现简单,可有效地减少程序的维护工作量,软件开发效率高。
    2) 面向对象的 缺点是:面向对象在面向过程的基础上高度抽象,从而和代码底层的直接交互非常少机会, 从而不适合底层开发和游戏甚至多媒体开发;对于事务开发而言,事务本身是面向过程的,过度的封装导致事务本身的复杂性提高。
    3)面向过程的优点: 流程化使得编程任务明确;效率高,面向过程强调代码的短小精悍;流程明确,具体步骤清楚,便于节点分析。
    4)面向过程的缺点:需深入思考,耗费精力,代码重用性低,扩展能力差,维护难度大, 对复杂业务来说,面向过程的模块难度较高,耦合度也较高。

    三、面向对象的三大基本特征:

    1、封装:把客观事物封装成抽象类或具体的对象,并且类或对象可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    2、继承:某个类型的对象获得另一个类型的对象的属性和方法

    3、多态:不同实例的相同方法在不同情形有不同表现形式。

    四、创建对象的几种方式:

    1、使用对象字面量创建对象:

    var person = {
    name: "李四",
    age: 20,
    sex: "男"
    };
    console.log(person.name);
    1)语法格式:{属性名: 属性值, ......,方法名: 函数,....}
    2)对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。但也存在很大的缺陷就是会很容易产生大量的重复代码,效率不高.

    2、使用工厂模式创建对象

    function createPerson(name,age) {
    return {
    name:name,
    age:age,
    speak:function () {
    console.log("正在说话...");
    }
    }
    var p= createPerson("Nike",29);
    1)在使用工厂模式创建对象的时候,我们都可以注意到,在createPerson函数中,return返回的是一个对象,那么我们就无法判断返回的对象究竟是一个什么样的类型,因此可以利用构造函数创建对象解决这个问题。

    3、使用构造函数创建对象

    function Person(name, age){
    this.age = age;
    this.name = name;
    this.speak = function (){
    console.log(this.name);
    }
    }
    var p= Person(“李四”,20);
    1)构造函数: 替代其他语言中的 class
    2)构造函数的命名一般遵循大驼峰:所有单词的首字母大写
    3)对比工厂模式,我们可以发现以下区别:
    a.没有显示地创建对象; b.直接将属性和方法赋给了this对象; c.没有return语句; d.可识别对象类型。对于检测对象类型,我们可以使用instanceof操作符检测,返回的是true或者false
    4)缺点: 方法是每个对象都会有一份,导致资源的浪费.
    优点: 数据属性,每个对象都会有一份

    4、原型创建对象模式

    function Person(){}
    Person.prototype.name =“李四”;
    Person.prototype.age = 20;
    Person.prototype.sayName = function(){
    alert(this.name);
    };
    var p1 = new Person();
    p1.sayName();
    1)使用原型创建对象的方式,可以让所有对象实例共享它所包含的属性和方法。
    2)缺点: 数据属性共享.
    优点: 方法共享
    3)原型创建对象模式正好是与构造函数互补的,因此可以通过组合使用构造函数模式和原型模式达到最优化

    5、组合使用构造函数模式和原型模式

    function Person(name,age){
    this.name =name;
    this.age = age;
    this.job = job;
    }
    Person.prototype = {
    constructor:Person,
    sayName: function(){
    alert(this.name);
    };
    }
    var p1 = new Person(“李四”,20);
    1)可以使用构造函数模式与原型模式结合的方式,让构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性

    相关文章

      网友评论

          本文标题:关于对JavaScript(高级部分)的一些学习心得

          本文链接:https://www.haomeiwen.com/subject/chvcxctx.html