您的位置:首页 > Web前端 > JavaScript

javascript面向对象基本概念

2019-05-16 22:14 197 查看

从我刚开始接触JS这门语言,就有听说过一句话:“世间万物皆对象,盘它就完事儿!”那么对象究竟是什么?什么是面向对象编程?

自己也查阅了部分书籍与资料,个人的一些理解:对象就是从我们现实生活中抽象出来的一个概念,有句话是这么说的:“物以类聚,人以群分”,这里面就是2个很重要的概念 。
1.类:每个对象都是由类定义的,可以把类看做是一个对象的配方,类不仅要定义对象的属性和方法,还要定义对象内部的工作原理,百度查找多次,然而发现javascript并没有正式的类,创建一个对象只要定义一个该对象的构造函数并通过它创建对象即可。(虽然类不是真正存在,我们也把对象定义为类)。

2.实例:程序使用类创建对象时,生成的对象叫类的实例。由类创建对象实例的过程叫做实例化。

3.对象定义:可以把对象理解为属性的集合,每个属性存放一个原始值、对象或函数。

4.面向对象:粗暴点讲就是不用去了解对象的内部结构,就可以去使用它,就比如我们玩英雄联盟,我们知道按键盘对应的键就能使用技能进行打击敌人,但是我们不必去了解它的内部工作原理(为什么我按这个键他就能触发技能),再比如我们生活中用手机打电话,一个原理,我们只需要知道手机能打电话就够了,不需要去了解它怎么生产的,就像我们js中使用date对象的方法就能获取和设置时间,但是我们不用弄清楚它为什么会实现这个功能,有点类似于我们常说的模块化,便于不同之间的协作。
不多说了,上干货,盘它。

创建对象的方法

  1. 基本函数模式

    控制台打印:

  2. 工厂函数模式:使用创建并返回特定类型的对象的函数(类似于工厂生产产品,原材料-加工-产品),优点:解决了多次重复创建多个对象的麻烦。 ;

    控制台打印:

  3. 构造函数模式:凡是使用new调用的函数都为构造函数,构造函数提供模板作为对象的基本结构,构造函数内部使用this变量,且this会绑定在实例对象上;

    控制台打印:

  4. 原型模式:每一个构造函数都有一个prototype属性指向另一个对象,这个对象的所有属性和方法都会被构造函数的实例继承,可以把那些不变的属性和方法,直接定义在prototype对象上 ;

    js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加。
    也就是说:当生产一个function对象的时候,就有一个原型prototype。
    prototype的属性值是一个对象,是属性的集合,为什么要说他的属性的集合呢?我再来举个例子:

    控制台打印:

  5. 构造函数原型组合模式:组合模式中实例属性与共享方法(用原型定义)是分离的,这与纯面向对象语言不太一致 ;

    控制台打印:

  6. 动态原型模式 :与混合的构造函数原型方式相同,就是在构造函数内定义非函数属性,而函数属性则利用原型属性定义,动态原型模式将所有构造信息都封装在一个构造函数中,又保持了组合的优点;

    控制台打印:

    这都是个人的一些理解(有些解释不清楚自己还故意去百度了下,哈哈,解释的不够专业,还望多多包涵)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: