基于对象和面向对象的编程语言到底有什么区别

区别是:Js是基于原型的面向对象(prototype-based),而Java,C++这种则是基于类的面向对象(class-based),它们都是面向对象语言。基于原型的面向对象是没有类的,只有对象。没有类自然也没有继承,但是依然可以多态,只不过不是由基类约束,而是直接通过名字查找来多态。

基于对象和面向对象的编程语言到底有什么区别-Worktile社区

Js是基于原型的面向对象(prototype-based),而Java,C++这种则是基于类的面向对象(class-based),它们都是面向对象语言。

基于原型的面向对象是没有类的,只有对象,js通过原型来做组合(js里什么class,构造器,new等等全是语法糖,这些js本来没有的,后面为了给某些习惯class-based语言的使用者加的,本质依然跟原来一样)。

没有类自然也没有继承,但是依然可以多态,只不过不是由基类约束,而是直接通过名字查找来多态,这当然也是一种面向对象的多态,对象的里存了啥那调的就是啥,找不到就去原型里找,不是要看所谓对象的“类型“,而是看的是对象本身的内容,多态是很自然的嵌入到语言机制里的。比如a.f和b.f分别赋值两个不同的函数,然后如果a和b作为传给同一个函数做参数时,假设函数里的形参叫c,那么c.f()就会调用不同的f,如果对象里查不到f,还会去原型里查,这就是很自然的多态。

所以事实上网上很多的拿js去模拟Java,搞什么所谓的继承,接口,硬是要在js里搞个基类然后继承重写,美其名曰用js实现了“面向对象的多态”,真的是蛮好笑的。楼上竟然还有回答说js以前不支持多态,真就必须要继承重写才叫多态呗,哪天真的要把js踢出oop阵营了。

延伸阅读:

什么是编程语言?

编程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

编程语言处在不断的发展和变化中,从最初的机器语言发展到如今的2500种以上的高级语言,每种语言都有其特定的用途和不同的发展轨迹。编程语言并不像人类自然语言发展变化一样的缓慢而又持久,其发展是相当快速的,这主要是计算机硬件、互联网和IT业的发展促进了编程语言的发展。

文章标题:基于对象和面向对象的编程语言到底有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38599

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月17日 上午2:32
下一篇 2023年2月17日 上午2:34

相关推荐

  • html怎么下载

    下载html的步骤:1、点击浏览器菜单栏列表;2、选择将页面另存为;3、选择要保存html文件所在的地方。点击浏览器菜单栏列表是指,在浏览器书签栏的右端,可以看到表示扩展到三个点,点击即可展开菜单栏。 1、点击浏览器菜单栏列表 以Microsoft Edge浏览器为例,如图所示,点击书签栏最右端按钮…

    2023年3月16日
    81000
  • 如何定义需求的优先级

    根据以下几点定义需求的优先级:1、收益;2、惩罚;3、成本;4、风险;5、依赖关系;6、时间敏感性;7、稳定性;8、监管或政策合规。收益是针对变革的宗旨和目标进行衡量的实施需求能够为相关方所带来的好处。

    2023年1月6日
    14200
  • jira如何使用

    jira的使用流程:一、创建项目;二、选择模板;三、设置列;四、创建事务;五、邀请团队;六、推动工作进展。创建项目需要先点击左上角的 Jira 主页图标,再在右上角选择“创建项目”。

    2023年1月31日
    22000
  • 冒烟测试和回归测试的区别是什么

    冒烟测试和回归测试的区别在于以下几个方面:1、测试目的不同;2、测试过程不同;3、问题解决方式不同;4、测试周期不同;5、测试意义不同。测试目的不同是指,冒烟测试:用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。 一、测试目的不同 冒烟测试:用于确认代码中的更改会按预期运行,且不会破坏…

    2023年2月19日
    70100
  • css框架有哪些

    css框架有:1、Bootstrap;2、Foundation;3、Bulma;4、Ulkit;5、Semantic UI;6、BlueTrip;7、渴切-开源中文css框架;8、Blueprint。其中,Bootstrap框架被认为是较好的响应式 CSS 框架。

    2023年1月5日
    74300
  • ajax中get和post请求的区别是什么

    ajax中get和post请求的区别在于以下几个方面:1、表示请求的方式不同;2、传参的方式不同;3、安全性不同;4、数据大小不同;5、参数类型不同。表示请求的方式不同是指,get是查询,post是添加,patch和put是修改,但patch是局部修改,put是整体修改,delete是删除。

    2023年2月18日
    19700
  • 如何做好项目计划安排

    做好项目计划安排的步骤:一、向主要利益干系人解释项目,定义目标,获得初步认同;二、列出项目OKR;三、创建项目文档;四、制定项目时间表;五、定义角色、职责和资源;六、制定工作和协作流程;七、权衡项目风险;八、召开项目启动会。任何项目的第一步都要定义“是什么”和“为什么”。 一、向主要利益干系人解释项…

    2023年3月31日
    10100
  • jira管理工具怎么用

    使用jira 的步骤:一、创建一个项目;二、创建一个问题;三、设置问题属性;四、设置工作流程;五、跟踪问题。在Jira中创建一个新项目非常简单。首先,点击Jira首页的“创建项目”按钮。接着,在弹出的对话框中选择项目类型和模板。 一、创建一个项目 在Jira中创建一个新项目非常简单。首先,点击Jir…

    2023年3月31日
    8900
  • 现代计算机的基本工作原理是什么

    现代计算机的基本工作原理是:1、存储程序;2、程序控制。存储程序是指,将解题的步骤编成程序(通常由若干指令组成),并把程序存放在计算机的存储器中(指主存或内存)。

    2023年1月9日
    19200
  • Scrum工具Leangoo免费版和企业版的区别是什么

    Scrum工具Leangoo免费版和企业版的区别是:1、用户数量限制;2、功能模块;3、数据存储和备份;4、技术支持和培训;5、定制化和扩展性。Leangoo免费版通常限制团队成员数量较少,可能适用于小型团队或个人项目管理。Leangoo企业版通常没有用户数量限制。 一、用户数量限制 免费版:Lea…

    2023年7月30日
    4000

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部