javaScript(肆)
2021/6/15 22:47:44
本文主要是介绍javaScript(肆),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 面向对象
这是一种编程思想,需要多加练习才能掌握,有点只可意会不可言传的味道。
我的理解是面向对象就是无论要写什么程序,都可以通过封装一个抽象的集合,通过实例化这个抽象的集合来完成我们需要的工作。
打个比方,我们需要写一个制冷的程序。这时可以封装一个抽象的冰箱集合,构建这个抽象冰箱的时候给它一些属性和方法,其中就有制冷的方法,然后通过实例化这个抽象的冰箱集合,调用它制冷的方法来实现我们最初制冷的目的。
面向过程其实就是需要什么就直接写什么,还是比如我们需要一个制冷的程序,就需要一步一步的写通电,电能使蒸发器工作,蒸发器使制冷剂汽化吸热,制冷。如此以来实现这个制冷的程序。而在面向对象的编程中,这些都会被封装在一个对象的方法中。
面向对象在封装的过程中使比较麻烦的,但是优点是编程灵活,代码可复用,高度模块化,易于维护和开发。
1.1 三大特征
封装:需要的属性方法都在一个抽象对象中,用到时只需调用即可
继承:新建的抽象对象集合可以继承已有抽象集合的属性和方法
多态:一个抽象集合可以有各种方法
1.2 基本和引用数据类型
基本数据类型存储在栈中,占用空间固定,内存栈会在基本数据类型引用结束后就会销毁
引用数据类型即对象,存储在堆中,占用空间不固定,其属性和方法都是以地址的形式存储在栈中,需要引用时也是先访问地址,再通过地址访问堆内存中的数据。只有在一个对象没有任何变量引用它时,才会被系统的垃圾回收机制回收。
1.3 构造函数和实例化对象
构造函数是实例化对象时用到的一个函数,通过它可以把抽象的对象集合实例化一个具体的对象。
大致的过程如下
function Phone(brand, color) { this.brand = brand; this.color = color; } var phone4 = new Phone("huawei", "black"); //实例化对象
1.3.1 constructor属性
构造函数实例化对象的constructor属性指向的是构造函数本身
1.4 解决内存浪费问题
构造函数每次实例化时都会开辟新的空间,即使实例化的属性的方法相同,所以就会存在内存浪费问题
1.4.1 原型
在Javascript 中,每一个构造函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承
所以可以把需要共享的属性和方法都定义在prototype对象上
function Student(name, age) { this.name = name; this.age = age; } Student.prototype.study = function () { console.log("学习"); } var student1 = new Student("张三", "18");
这时所有实例的study方法都指向同一个内存地址
原型的优点:避免内存浪费,数据可以共享
1.4.1 实例化对象的查找规则
先在自己身上找,找到即返回,自己身上找不到,则沿着原型链(构造函数的prototype对象)向上查找,找到即返回,如果一直到原型链的末端还没有找到,则返回 undefined
这篇关于javaScript(肆)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04百万架构师第六课:设计模式:策略模式及模板模式
- 2025-01-04百万架构师第七课:设计模式:装饰器模式及观察者模式
- 2025-01-04适用于企业管理的协作工具API推荐
- 2025-01-04挑战16:被限流的CPU
- 2025-01-03企业在选择工具时,如何评估其背后的技术团队
- 2025-01-03Angular中打造动态多彩标签组件的方法
- 2025-01-03Flask过时了吗?FastAPI才是未来?
- 2025-01-0311个每位开发者都应知道的免费实用网站
- 2025-01-03从REST到GraphQL:为什么以及我是如何完成转型的
- 2025-01-03掌握RAG:从单次问答到连续对话