手机版

用Javascript详细解释原型OOP

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

对于很多刚学Javascript的初学者来说,Javascript原型链总是很神秘,很难理解,但是如果你想深入学习JavaScript,就要研究以下内容。也许你很少有机会使用它,但我想说,机会总是留给有准备的人。让我们学习下面这篇文章。

百度百科用JavaScript描述property:原型对象是实现面向对象的重要机制。每个函数都是一个对象,它有一个子对象原型对象,类是以函数的形式定义的。Prototype表示函数的原型,也表示类成员的集合。

实践中的理解

然后我在浏览器中做了以下实验:

你可以看到我设置了一个测试“类型”。我用typeof得到Test“type”的类型,结果是function,它告诉我们这是一个类。接下来,我继续得到Test.prototype的类型,也就是原型的类型,结果是object,告诉我们这是一个对象。通过将一系列方法和属性附加到对象,您可以理解对象是什么。既然我们知道它是一个对象,我们就可以对这个对象做一系列的操作。

看看代码:

Script //来自两个参数品牌,车型功能车(汽车品牌、车型){这个。汽车品牌=汽车品牌;this.model=model}//来一个加速方法car . prototype . acceleration=function(){ console . log('这是' this . car brand '-' this . model ');}//另一种方式:按喇叭car . prototype . hook=function(){ console . log(' tick-tick ');}//得出一个车轮数为Car.prototype.Wheel=4的属性;//特斯拉自带三参数品牌、车型和动力功能特斯拉(汽车品牌、车型、动力){car。称呼(这个、汽车品牌、车型);this.power=power}特斯拉. prototype=object . create(car . prototype);//创建一个空对象,使其原型指向该参数,即car . prototype . Tesla . prototype . constructor=Tesla;//在不影响整个流程的情况下取消特斯拉的建设,但为了保持一致,如果这一行没有代码,那么构造函数就是Cartesla。prototype . acceleration=function(){ console . log(' this is ' this。汽车品牌'这个。模拟“开车经过”这个。权力);}//特斯拉独一无二的GetGirl你知道特斯拉。prototype . getgirl=function(){ console . log('是的,他妈的车.');}//特斯拉modelX electric var modelx=新特斯拉(‘特斯拉’‘modelX’‘电力’);console . log(modelX的类型);modelX。加速度();console . log(MoDEX。车轮);modelX。GetGirl();modelX。hoot();console.log(特斯拉. prototype . constructor);/script我在代码里做了一系列的注释,开了一辆特斯拉。我定义了Car的类型,拿到Car的对象,需要两个参数,品牌和型号。有一种加速和鸣笛的方法。接下来,希望特斯拉能够继承Car的基本方法和属性。然后我定义了特斯拉类型,通过调用来调用父类的方法。你可能在这里看不到这个调用的意义,因为Car类型只是赋值。如果是一系列复杂逻辑运算(车辆生产)后的赋值,那就有用了。

输出结果

看输出,不要问为什么,继续往下看。

你看到输出了。我是特斯拉ModelX,电动车。其他输出没有详细说明。

特斯拉的原型车指的是Car原型车,那为什么不直接赋值呢?原因是当原型被直接赋值时,子类原型对象的附加属性和方法将被带到父类中。

然后将特斯拉的原型构造指向自身。如果不指向自身,那么它的原型构造就是Car。虽然不会影响整个流程,但为了保证一致性,特斯拉还是将原型车建设保持在特斯拉旗下。特斯拉拥有与其父类同名的加速方法。你也有自己的GetGirl方法,你知道的。您可以手动调用并看到父类的原型对象上没有子类方法。

当子类调用与父类同名的方法时,它会选择子类的调用。但是,子类特斯拉没有鸣笛方法,原型在沿着原型链寻找父类时,可以调用父类的鸣笛方法。

摘要

以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助。有问题可以留言交流。

版权声明:用Javascript详细解释原型OOP是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。