面向对象编程js
⑴ JS 面向对象
为了能够清楚的解释这一切,我先从对象讲起。从其他面向对象语言(如java)而来的人可能认为在JS里的对象也是由类来实例化出来的,并且是由属性和方法组成的。
实际上在JS里并不是如你所想(我开始是这么想的)那样,对象或直接称为object,实际上只是一些映射对的集合,像Map,字典等概念。JS里有大概7种类型(加上Symbol),数字、字符串、null、undefined、布尔、Symbol、对象。除对象以外的其他类型属于原始类型,就是说它们比较单纯,包含的东西比较少,基本上就是字面量所表示的那些(像C语言中的一些类型,就是占那么多空间,没有其他的东西)。object基本上是一些键值对的集合,属于引用类型,即是有一个名字去指向它来供别人使用的,就好像比较重的东西你拿不动,而只是拿了张记录东西所在地的纸条。所以当A对象里嵌套了B对象,仅表示A里面有一个引用指向了B,并不是真正把B包含在A里面,虽然看起来是这样(尤其是从对象的字面量上来看),所以才会有所谓的深拷贝与浅拷贝。
有句话叫“JavaScript里一切皆对象”,是因为在很多情况下原始类型会被自动的转为对象,而函数实际上也是对象,这样这句话看起来就很有道理了。
说明对象的本质是为了正确地认识对象,因为这关系到后面的理解。
⑵ 5.JavaScript中使用面向对象编程思想的目的是
我需要吃饭
面向过程:买菜,煮法,炒菜——>吃饭
面向对象:订外卖——>吃饭
由上例子,面向过程需要我们分析每个步骤的实现;而面向对象则是只需要持有某个对象,然后使用它即可。
采用oop(面向对象编程思想),可以让提高代码复用性,程序扩展和维护性提高,而且可以降低耦合性,使得程序更加灵活,更加易于维护。
如果满意,望采纳,谢谢!
⑶ 函数式编程 vs 面向对象编程 vs 过程式编程的JS演示比较
这是一个真实的例子,展示了三种最常见的编程范式的差异。我将用三种不同的方式解决一个问题。
每个示例将处理表单提交、验证用户输入并将创建的用户打印到控制台。我还添加了保存错误记录器。
案例表单
简单的 HTML 登录表单,它将包含三个js不同范式的有效文件。
过程化编程
过程式编程只是一步一步地解决问题。这是完全有效的编码方式,但是当您希望应用程序扩展时它有许多缺点。
简单一步一步解决问题。但它根本不可重用和可扩展。尽管它对于解决此类问题完全有效,并且您将看到它比其他问题要短得多。
面向对象编程
面向对象编程 ( OOP ) 是最接近现实世界的,因此很容易让您思考。我们查看将其划分为Object的代码,其中每个都只完成它的工作。在OOP 中学习的有用概念是SOLID。
现在你可以明白我将问题划分为Objects 的意思了:
正如你所看到的,有更多的代码,看起来更复杂……那么为什么有人会喜欢这个?
酷的是,现在我们可以将它用于任何类似的形式,只需调用:
因此,它可以在包含此脚本的每个文件中重复使用。而且它很容易扩展,因为一切都被分成只做一件事的块(单一责任原则)。
函数式编程
非常流行,而且非常简单。请注意,这并不意味着它无论如何都更好。尽管某些范例可能对某些问题更好,但使用哪个完全取决于您。
正如您在 函数式编程 中看到的,我们希望使用小的(理想情况下是纯函数)函数来解决问题。这种方法也非常具有可 扩展性 ,并且函数可以重用。
纯函数是一种没有难以追踪的副作用的函数。纯函数应该只依赖于给定的参数。
结论
没有更好和更坏的范式。有经验的开发人员可以看到每个的优点,并为给定的问题选择最好的。
过程式编程并不是说你不能使用函数,函数式编程也不会阻止你使用“类”。这些范式只是帮助以一种随着代码增长而有益的方式来解决问题。
函数式编程 vs 面向对象编程 vs 过程式编程的JS演示比较 - DEV
⑷ JavaScript中的“面向对象”和Java语言中的“面向对象”有何不同
面向对象三大特征:封装、继承、多态
基于封装,引出了js如何创建对象(class、function、原型+闭包创建私有变量等)。这个java和js都差不多
基于继承,引出了js继承的一些知识点,如extends、super、重写重载、abstract(typescript)、interface(typescript)。js主要是基于原型继承,而java主要是基于extends
多态存在的三个必要条件。重写(继承)、重载、向上转型:其中重写,js支持。重载js不支持,可以通过额外处理来支持向上转型,因为js是弱类型语言,不支持数据类型,ts支持(编译阶段)
也就是说对于多态的支持,目前js只支持一种。
总的来说 js的面向对象支持还没有java语言那么丰富严谨,正是因为这些宽松语法,也让js变得更加有趣。但是面向对象oop的思想是一致的。因为oop思想不是固定语言的特性,而是一种思想。随着js不断的更新迭代,相信其语法特性也更加丰富和严谨。
后话:js目前的发展趋势,好像不在跟随传统语言的oop,有点往函数式编程的路上转向
⑸ 怎么理解js面向对象编程和模块化思维
怎么理解js面向对象编程和模块化思维
是对象,任何函数都是对象 是闭包,任何被大括号包立起来的方法都可以看做闭包 对象和闭包不是一回事
⑹ js 什么是面向对象
面向对象是一种开发方法或者是开发思想,面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
⑺ js是面向对象的编程语言吗
是的,js是基于对象的,连他的function函数都是一种对象。所以是面向对象的!
⑻ 如何用面向对象的方法用写JS
1,html写好界面,定义好class和id
2,为了模拟出扑克牌21点游戏,应先定义卡牌池中有1-10,J,Q,K每个数字和字母分别有4个
3,js中实现界面交互,如点击开始按钮,随机从卡牌池中抽取一个数字或字母存入临时变量a,并附于点数之和num其相应的点数
4,点击抽牌按钮随机从卡牌池剩余的卡牌中抽取,对应的卡牌存入变量a中,点数之和num=num+本次抽卡的点数
5,当num>21时提示玩家爆点,小于21点时可选按钮抽牌,等于21点时提示恭喜之类的话,如果点击完成抽牌则记录此玩家点数
6,同理可扩充玩家至2,3,4....个,原理相同,不同玩家存储对应的变量就可以了,最终通过所有<=21点的玩家num,num1,num2来判断输赢
7,同理可设置庄家,庄家在与其他玩家点数相同时赢得对方
8,在此基础上就能增添许多功能了,比如每个玩家默认100金币,有底注,每轮开始的时候可加注,如玩家不跟则底注输掉无法参加游戏,等等之类的各种规则随便发挥
⑼ 请问一下js面向对象编程在网页中什么情况下才需要用到
比如:做网页轮播效果。效果是必须满足可以在不同的HTML(相同的布局方式)、不同的DOM节点或则同个页面多个轮播效果等。这种时候你就可以考虑封装一个通用的轮播功能,然后实例化(new)该对象以实现效果。其实,面向对象只是一种在编写程序中的一种思维方式,然而封装网页轮播效果你也可以用面向过程化来解决问题