浅谈面向对象
一,概念
- 对象(Object):
含有“物体”的概念,一切皆物体(对象),是实际存在的该类事物的每个个体,因此也称之为实例。对象由静态的属性和动态的行为组成。 - 类:
是一组具有相同属性和行为的对象的抽象,概念上的定义; - 类和对象的区别:
类是对象的模板,对象是类的实例。类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。类不能直接使用,对象是可以直接使用的。对象如果将对象比作汽车,那么类就好比汽车的设计图纸。
二,面向对象的一些基本的特征:
(1)封装:保护内部的操作不被破坏;隐藏内部实现,稳定外部接口。
(2)继承:在原本的基础之上继续进行扩充;继承即是让一个类拥有另一个类的某些属性和方法的特性。
(3)多态:在一个指定的范围之内进行概念的转换。
三,创建方式
(1).new 操作符 + Object 创建对象
(2).字面式创建对象
以上两种方法在使用同一接口创建多个对象时,会产生大量重复代码,为了解决此问题,工厂模式被开发
(3).工厂模式
工厂模式解决了重复实例化多个对象的问题,但没有解决对象识别的问题(但是工厂模式却无从识别对象的类型,因为全部都是Object,不像Date、Array等,本例中,得到的都是o对象,对象的类型都是Object,因此出现了构造函数模式)。
(4).构造函数模式
对比工厂模式有以下不同之处:1、没有显式地创建对象2、直接将属性和方法赋给了 this 对象3、没有 return 语句
(5).原型模式
原型模式的好处是所有对象实例共享它的属性和方法(即所谓的共有属性)
四,操作方法
Object.assign()
通过复制一个或多个对象来创建一个新的对象。
Object.create()
使用指定的原型对象和属性创建一个新对象。
Object.defineProperty()
给对象添加一个属性并指定该属性的配置。
Object.is()
比较两个值是否相同。所有 NaN 值都相等(这与和=不同)。。
Object.keys()
返回一个包含所有给定对象自身可枚举属性名称的数组。
Object.values()
返回给定对象自身可枚举值的数组。