wordpress 建站的利弊,网站编程教学,建设部证书查询网站,好模版网站想要对象了#xff1f;没问题#xff0c;new一个就好了。 但是#xff0c;new太多对象#xff0c;对象也会生气的哦。 你瞧#xff0c;她来了 从两段代码发现端倪 
我们来计算一个矩形的面积#xff0c;看看这两段代码有什么区别呢#xff1f; 
第一段#xff1a; 
con…想要对象了没问题new一个就好了。 但是new太多对象对象也会生气的哦。 你瞧她来了 从两段代码发现端倪 
我们来计算一个矩形的面积看看这两段代码有什么区别呢 
第一段 
const height  3;const width  5;let aaa  123;let bbb  456;let ccc  789;// 定义一个函数根据长宽计算矩形面积function calculateRectangleArea(height, width) {    return height * width;}//调用函数得到一个结果const area  calculateRectangleArea(height, width);console.log(面积为: ${area}); 
第二段 
let aaa  123;let bbb  456;let ccc  789;// 面向对象方式 - 矩形类class Rectangle {    constructor(height, width) {        this.height  height;        this.width  width;    }    calculateArea() {        return this.height * this.width;    }}const rectangle  new Rectangle(3, 5);const area  rectangle.calculateArea();console.log(面积为: ${area}); 
有什么区别呢区别呢 
第一段代码是面向过程的写法第二段是面向对象的写法。其中很多相同的点变量、函数、函数调用无论是面向过程还是面向对象这些基本的调用逻辑还是要有的。面向对象与面向过程的区别又在哪呢 
1.  第一个区别是否是一个整体。第一段代码中变量是散乱的只有调calculateRectangleArea函数的时候才把、宽、高、面积建立了联系。而第二段代码则一开始就用矩形把宽和高绑定到一起通过初始赋值(构造函数参数)将这个矩形定型为高为3宽为5的的矩形这样长、宽就在一个整体中了。 
2.  第二个区别是编程思路的区别。在第一个区别的基础上第一段代码需要按照书写顺序来理解代码。从编程人的视角来看我们面向的就是从上到下运行的这样一个过程简称面向过程。而第二段代码我们先创造了一个整体一个矩形的整体再操作这个整体。这个整体在英文中叫做Object中文翻译就有对象。当我们面向某一个整体编程的时候我们就把这种编程思路叫做面向对象。也可以理解为面向具象、万物、任何因为对象可以代表任何具体的事物。 
怎样算作对象 
非书面说法设定属性后的那个实际的整体被称作为对象。来看代码 
class Rectangle {    constructor(height, width) {        this.height  height;        this.width  width;    }    calculateArea() {        return this.height * this.width;    }} 
Rectangle这个是对象吗height是吗width呢 
都不是这只是说一个矩形应该要有宽和高只是设想、概念亦或者是模板。仅凭这些属性无法描述某一个真实的、具体的矩形。如何创建一个具象的给他具体的值再使用new创造一下(创建啥不都得来个动作么比如捏个泥人的是不是得捏)来看代码 
const r1  new Rectangle(100,200)const r2  new Rectangle(6,6) 
通过new这个关键字结合具体的属性值我们得到了两个具象的实际的整体(实体)。这两个实体虽然都是矩形类型的但很容易分辨一个是100*200的矩形r1另一个是6*6正方形的特殊矩形r2对象就这样产生了这两个实体就是对象创建的过程叫做实例化 
那么还要问个问题是不是说r1r2 这两个变量就是对象 
答案是否定的这两个变量不是对象至少此时此刻不能这样叫真正的对象我们看不见、摸不着、操作不了的创建的时候他在内存中没有名字。来看代码 
new Rectangle(123,333) 
这条语句执行之后必然也会创建出来一个对象只不过没有给他指定任何名字也就无法使用。类比刚降生的可爱的小宝宝如果不给他起名字他就不存在了吗他是实实在在存在的。想要跟他互动引起ta的注意就要给他起个名字避免和旁边其他的人混淆。r1、r2也是如此用 r1、r2来表示创建出来的对象方便使用当然如果你了解这个过程了我们以后也可以称作r1、r2为对象了解了内在逻辑怎么叫就都可以了 什么是面向对象 
面向对象Object-Oriented简称OOP是一种编程范式或方法论用于组织、设计和实现计算机程序。面向对象编程的核心思想是将程序中的数据对象和操作方法组合成一个个独立的、可重用的模块这些模块可以通过定义类和实例化对象的方式来创建。面向对象编程的主要目标是提高代码的可维护性、可扩展性和可重用性。 
面向对象编程有以下几个主要概念 
构造函数也叫做类(Class)构造函数是一个模板用于定义对象的属性数据成员和行为方法。它描述了对象的基本结构和行为。类可以看作是创建对象的蓝图。 
对象Object对象是类的一个实例具有类定义的属性和行为。每个对象都是独立的有自己的状态和行为。 
封装Encapsulation封装是将数据和方法行为组合到一个单元中通过访问权限控制来隐藏内部实现的细节。这可以提高代码的模块化和隔离性减少了代码之间的耦合。在js中封装相对来说比较不好实现。es6中使用#定义内部属性这个属性就不会被外部访问到 
继承Inheritance继承允许一个类从另一个类派生从而继承其属性和方法。派生类可以扩展、修改或覆盖基类的功能实现代码的重用和扩展。es6中使用extends关键字来实现 
面向对象的好处 
不聊书面用语用例子来看 
const arr  new Array() 
这是一个很常见的创建数组的方式使用一个内置构造函数(类)Array 通过 new的方式我们创建出来了一个实例对象我们叫他arr这个arr有很多方法比如push、pop、shift、unshift等这些是数组独有的方法 
再看 
let str1  qfedu 
这个 str1 对象是字符串类型的实例它拥有多个方法比如 split、toLowerCase 等然而与数组不同str1 对象无法使用像 push、pop、shift 等数组特有的方法。一个类型的实例对象只能调用其所属类的方法。 
每个类都很专业。一个类只负责一种特定的功能或任务这个原则通常被称为 单一职责原则。这就是面向对象的好处。接下来继续介绍一些其他的好处。 积木式构建就像搭积木一样你可以将不同的类视为构建块每个类都代表一个独立的功能或特性。通过将不同的类组合在一起你就像是在搭建一个功能丰富的结构每个类都负责一部分功能最终形成一个完整的应用程序。 
灵活组合类似于积木的组合方式不同的类可以以多种方式组合来实现不同的功能。你可以通过创建不同的类的实例将它们组合成更大的对象形成复杂的数据结构从而实现更复杂的功能。这种组合方式可以根据需要灵活调整实现不同的行为。 
逐步扩展就像你可以逐步添加积木块来扩展你的创意作品一样你可以通过逐步添加新的类来扩展你的应用程序的功能。这种逐步添加功能的方式使得你可以根据需求逐步完善和扩展应用而不必一次性处理所有功能。 
功能定制类似于选择不同类型的积木块来创造不同的形状你可以选择不同的类来实现不同的功能。每个类都代表一个特定的功能单元你可以根据需要选择并组合不同的功能单元定制出符合要求的应用程序。 
总的来说将面向对象编程比作摆积木一样的构建过程强调了代码的组合性、可维护性和灵活性。通过将不同的类组合在一起你可以构建出功能丰富且高度可定制的应用程序就像用积木搭建出各种形状和结构一样。这种比喻可以帮助你更好地理解面向对象编程的优势和应用。 
那么现在找到对象了吗祝小伙伴们都找到称心如意的对象