什么是Javascript语言的多态

java语言是一门静态类型的语言,由于在代码编译时要进行严格的类型检查,所以不能给变量赋予不同类型的值,这种类型检查就会使代码变得僵硬,但是java也可以通过继承得到多态的效果(实现继承和接口继承) 可以向上转型来实现多态。

多态的实际含义是,同一操作,作用在不同的对象上面,可以产生不同的解释和不同的执行结果。javascript的变量类型在运行期是可变的,这就意味着javascript对象的多态性是与生俱来的。

下面一张图来解释:

主人同时向鸡和鸭两个对象发出指令 “发出叫声”, 鸡和鸭同时发出叫声,但是他们的叫声是不一样的。
什么是Javascript语言的多态

我们用代码来演示这个例子:

立即学习“Java免费学习笔记(深入)”;

传统的代码我们习惯用 if else 来堆砌硬编码代码,但是如果这个对象一直往上加就会造成不断的加代码,修改代码总是很危险的,修改的地方越多,程序出错的可能性就会越大,而且当动物的类型越多的时候就会造成if else 堆砌成了一个巨大的函数,不利于维护。

var makeSound = function(animal) {     if (animal instanceof Dog) {        console.log('wanwan');     } else if(animal instanceof Cat) {        console.log('miaomiao');     }}var Dog = function() {}var Cat = function() {}makeSound(new Dog());makeSound(new Cat());

登录后复制

修改之后的代码如下:

 var makeSound = function(animal) {     animal.sound();}var Dog = function() {}Dog.prototype.sound = function(){   console.log('wanwan');}var Cat = function() {}Cat.prototype.sound = function() {   console.log('miaomiao');}makeSound(new Dog());makeSound(new Cat());

登录后复制

如何理解如果对象无法响应某个请求,它会把这个请求委托给它的构造器的原型,这条原则是原型继承的精髓所在,下面有这样的一段代码:

var obj = {name:’lin’};

var A = function() {};

A.prototype = obj;

var a = new A();
console.log(a.name);

解释:遍历对象a所有的属性,没有找到name这个属性
查找name属性的这个请求被委托给对象a的构造器的原型,它被a._proto_记录并且指向A.prototype,
而A.prototype被设置为对象obj
在对象obj中找到name属性,并且返回。

相关推荐:

如何学习JavaScript语言?学习重难点有哪些?

javascript语言结构小记(一)_基础知识

详解JavaScript语言的基本语法要求_基础知识

以上就是什么是Javascript语言的多态 的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2788399.html

(0)
上一篇 2025年3月8日 18:25:55
下一篇 2025年3月7日 09:20:01

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 简单明了的JS抽象语法树

    本文我们主要和大家分享简单明了的js抽象语法树,我们首先会介绍什么是抽象语法树,希望能帮助到大家。 babel是现在几乎每个项目中必备的一个东西,但是其工作原理避不开对js的解析在生成的过程,babel有引擎babylon,早期fork了项…

    2025年3月8日 编程技术
    200
  • javascript实现网页兼容各种浏览器详解

    本文主要介绍javascript 开发之网页兼容各种浏览器的相关资料,这里提供了几种方法帮助大家掌握这样的功能,需要的朋友可以参考下,希望能帮助到大家。 前言: 关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下…

    编程技术 2025年3月8日
    200
  • node.js之断言assert的使用示例分享

    断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。 使用断言可以创建…

    编程技术 2025年3月8日
    200
  • JavaScript判断输入是否为数字类型

    本文主要介绍javascript判断输入是否为数字类型的方法总结的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下,希望能帮助到大家。 JavaScript判断输入是否为数字类型的方法总结 前言 很多时候需要判断一个输入是否位数字,…

    编程技术 2025年3月8日
    200
  • Nodejs调用WebService的详解

    本文主要介绍nodejs调用webservice的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 这两天一直在试着编写纯静态页面的js去调用由Java编写的WebService,一直…

    2025年3月8日
    200
  • JavaScript中重名的函数与对象实例详解

    本文主要给大家介绍了关于javascript中重名的函数与对象的相关内容,分享出来供大家参考学习,希望能帮助到大家。 JavaScript 允许重复声明变量,后声明的覆盖之前的。 var a = 1;var a = ‘x’;console.…

    编程技术 2025年3月8日
    200
  • ionic3和Angular4实现接口请求及本地json文件读取实例

    本文主要介绍ionic3+angular4实现接口请求及本地json文件读取示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 一 准备工作 首先,ionic3+Angular4的开发环境你得有,这里就不赘述。环境准…

    2025年3月8日
    200
  • Scala是如何解析Json字符串的

    本文主要介绍scala解析json字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家学习理解这部分内容,需要的朋友可以参考下,希望能帮助到大家。 Scala解析Json字符串的实例详解 1. 添加相应依赖        Json解…

    编程技术 2025年3月8日
    200
  • import与export在node.js中的使用方法

    import与export是es6中模块化的导入与导出,node.js现阶段不支持,需要通过babel进行编译,使其变成node.js的模块化代码。(关于node.js模块,可参考其他node.js模块化的文章)本文主要介绍import与e…

    2025年3月8日
    200
  • AngularJS仿微信图片手势缩放代码

    图片可以放大缩小这种功能很常见,本文主要介绍了angularjs 仿微信图片手势缩放的实例的相关资料,希望大家通过本文实现这样的功能,需要的朋友可以参考下,希望能帮助到大家。 AngularJS 仿微信图片手势缩放的实例 前言: 最近,公司…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论