JavaScript面向对象(一)

在我们学习JavaScript的过程中,经常会听到 面向对象的说法,当你了解了 面向对象的编程思想后,一定会爱上她的。

什么是面向对象

从广义上讲,世间万物皆对象,比如一颗树、一辆车、一本书、一个人等等,都可以称为对象。
(Object Oriented Programming) OOP 就是我们常说的面向对象编程,是一种思想。她的一条基本原则所有的程序都是由一个个单独的单元或者对象组成的。
从本质上可以认为是一种人类认知事物所采用的哲学观的计算模型。

简单了解面向对象思想

大家在日常生活中一定经常会和朋友、同事、家人去饭馆就餐畅聊。这就是一个最好的例子来说明面向对象的思想。
Okay,首先来看看使用 面向过程的方式是怎么才吃到美味可口的大餐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function prepareFood(cooker){
console.log("准备食材");
}
function cookFood(cooker){
console.log("厨师烧菜");
}
function meal(waiter){
console.log("服务员上餐")
}
function eat(customer){
console.log("客户吃上大餐")
}
//采购准备食材
prepareFood();
//厨师进行烹饪
cookFood();
//服务员上菜
meal();
//吃上这道菜
eat();

接下来再看看 面向对象的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var buyer={
prepareFood:function(){
console.log("准备食材");
}
};
var cook={
cookFood:function(){
console.log("厨师烧菜");
}
};
var waiter={
toMe:function(){
console.log("服务员上菜");
}
};
var me={
eat:function(){
console.log("我吃上了美味可口的大餐");
}
};
//完成我去餐馆吃大餐这一件事:
buyer.prepareFood();
cook.cookFood();
waiter.toMe();
me.eat();

废话就不多说了,来看看你的对象吧~~

对象

对象的产生有两种基本方式。一种是以原型(prototype)对象为基础产生新的对象。一种是以类(class)为基础产生新对象。原型的概念已经在认知心理学中被用来解释概念学习的递增特性,原型模型本身就是企图通过提供一个有代表性的对象为基础来产生各种新的对象,并由此继续产生更符合实际应用的对象。而原型-委托也是OOP中的对象抽象,代码共享机制中的一种。一个类提供了一个或者多个对象的通用性描述。从形式化的观点看,类与类型有关,因此一个类相当于是从该类中产生的实例的集合。而这样的观点也会带来一些矛盾,比较典型的就是在继承体系下,子集(子类)对象和父集(父类)对象之间的行为相融性可能很难达到,这也就是OOP中常被引用的—子类型(subtype)不等于子类(subclass)[Budd 2002]。而在一种所有皆对象的世界观背景下,在类模型基础上还诞生出了一种拥有元类(metaclass)的新对象模型。即类本身也是一种其他类的对象。以上三种根本不同的观点各自定义了三种基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型。而这三种对象模型也就导致了许多不同的程序设计语言(如果我们暂时把静态与动态的差别放在一边)。是的,我们经常接触的C++,Java都是使用基于类的对象模型,但除此之外还有很多我们所没有接触的OOPL采用了完全不一样的对象模型,他们是在用另外一种观点诠释OOP的内涵。—(引自百科)

JS中面向对象的三大特征

封装

所谓封装,就是把我们抽象出的属性和对属性的操作写到类的定义中,称为封装.
js 中实现封装主要有两种封装( 公开,私有)

1
2
3
4
5
6
7
8
9
10
class Person(name,sal){
this.name=name; //公开
var sal=sal;//私有
this.showInfo=function(){ //公开
window.alert(this.name+” ”+sal);
}
showInfo2(){ //把函数私有化.
window.alert(“你好”+this.name+” ”+sal)
}
}

继承

js 的继承在很多书籍当中都有做细致的类型和实现方式划分。大体上可以认为:对象冒充、原型方式这两种。在这两种方式都有各自的优缺点。

多态

多态的基本概念:一个引用类型(变量)在不同的情况下的多种状态。而JS本身是无态的,所以可以非常好的支持多态。

×

可以的话,我想喝杯咖啡续命

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 什么是面向对象
  2. 2. 简单了解面向对象思想
  3. 3. 对象
    1. 3.1. JS中面向对象的三大特征
      1. 3.1.1. 封装
      2. 3.1.2. 继承
      3. 3.1.3. 多态