面向对象是什么

面向对象(OO,Object-Oriented)

1.定义:

抽象点说:面向对象是一种对现实世界理解和抽象的方法。

具体而言,抽取功能相似的代码归成一,然后把相关的描述细节挂在原型上的一种编程方式。就是面向对象。

什么是类: class   类(Class)是面向对象程序设计实现信息封装的基础。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

    把具有相同特质的事物归为一类,具有相同的功能的代码块,类是一种用户定义类型,也称类类型。
    每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
比如水果就是一个类,苹果,香蕉,橘子都是水果类。
   

2.工厂模式

面向对象就是通过一个类去生成实例化对象。这个类就是一个工厂函数。我们在工厂里加工出具有相同属性和方法的产品出来。

比如把一个水果园看做是一个类,里面产出苹果橘子,他们都是累的实例化对象,具备水果的属性和方法。

用代码表示一下:

function Fruit(name,color){
    // 构造函数
    let obj = {
        name,
        color
    };
obj.taste=“好吃”;

obj.eat= fn;
function fn(){
    alert(this.name);
}
    return obj;
}
let  fruit1 = new Fruit("苹果","红色");
console.log(fruit1 );
Fruit就是一个类,fruit1是他的实例化对象,我们通过new Fruit产生了一个水果对象存在fruit1中。

所有的实例化对象都具备name,color,taste的属性。具备eat的方法。

可以通过fruit1.taste获取到“好吃”,也可以通过fruit1.eat()调用来弹出她的名字是“苹果”。

关于new,new 是一元函数运算符,有以下作用:

- 加了 new 之后,函数就会执行
- 括号只是用来传参的,不传参的话,可以不写括号(比如,fruit1=new Fruit)
- new 之后,函数中的this 指向 构造函数
- new 运算之后,如果 return 的是个简单类型(Number,String,boolean,undefined,null,Symbol)的数据,返回值是构造函数的实例化对象.

在进行类的封装的时候,我们需要先梳理一下逻辑:

第一步: 思考这个类 有哪些东西 是通用 (抽象的过程,比如水果类都有name,color,能eat)
第二步: 思考那些东西是需要在使用的时候 进行配置的 (比如水果有不同的的name和color,需要自行传入)
第三步: 思考 那些 功能 使用时,可能用到,就写成可以在实例上使用的方法 (比如Fruit类都可以eat)
第四步: 思考在什么情况下,实例可能需要做一些操作,封装成事件存在方法里。当出发这个事件的时候调用这个方法。

逻辑处理好之后就可以封装我们需要的类了。

这样的过程其实就是面向对象思想要表达的东西。

猜你喜欢

转载自blog.csdn.net/paopaosama/article/details/82318709