js算不算面向对象的语言?
网友解答: 谢邀,js肯定算面向对象语言。有句话说得好,“JavaScript里一切皆对象”。如果不确定,那我们首先明确下什么是面向对象,有三个核心概念。一是一切事物皆为对象;二是对象具
谢邀,js肯定算面向对象语言。有句话说得好,“JavaScript里一切皆对象”。如果不确定,那我们首先明确下什么是面向对象,有三个核心概念。
一是一切事物皆为对象;
二是对象具有封装和继承特性;
三是对象之间使用消息通信,各自存在信息隐藏。
我尝试通过以下几个例子来看Js是否都满足三个特性。
封装在一些静态类型的语言如java中,本身语法就提供了这些功能。js当中只能依靠变量的作用域来实现封装的特性,并且只能模拟出public和private两种特性。
继承虽然在es6中也有extend以及class,但其本质仍实现仍是基于原型机制。虽然原型继承方式写法很多,但是理解原型链机制比较重要,关键其实就是理解prototype和__prototype__。
多态多态其实就是把做的内容和谁去做分开。因为js是动态语言,多态性本身就有。下面这个例子就说明了,一个动物能否实现叫声,只取决于makeSound,而不针对某种类型的对象。
如果你对学习人工智能和科技新闻感兴趣,可以订阅我的酷米号,我会在这里发布所有与算法、机器学习以及深度学习有关的有趣文章。偶尔也回答有趣的问题,有问题可随时在评论区回复和讨论,看到即回。
(码字不易,若文章对你帮助请点赞支持~)
网友解答:我学js时间不长不短,还算凑合吧。刚开始听到的是js是弱类型语言,不能面向对象编程。
到后来接触其他的编程语言之后有些明白了,面向对象不是哪个语言所特有的属性,而是一种思想,通俗些说就是把一个项目进行模块儿化。面向对象的三个特性,封装,继承,多态,从这三个方面来看,js是属于面向对象的编程语言范畴的。
但在js中的继承并没有其他语言中的那么繁琐,诸如c++中的公有,私有,保护什么的,所以说js是严谨的面向对象的编程语言又感觉不太合适,但在项目开发中是可以采用面向对象的思想来进行对js编程的。
还是那句话,面向对象不是哪个语言所特有的属性,而是一种编程的思想,与其说js是面向对象的编程,不如说是面向原型的编程语言。
当然关于面向原型什么,感兴趣可以看一下,其实没啥用在开发中!
小生才疏学浅,有解释不当的地方还请见谅,也可以私信评论互相学习。