javascript类继承(Js的继承)

今天给各位分享javascript类继承的知识,其中也会对Js的继承进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、JavaScript六种继承方式?2、javascript什么是继承3、vue模块中如何使用javascript类继承4、Web前端学习之Javascript继承的常用4种方法

JavaScript六种继承方式?

继承是面向对象编程中又一非常重要的概念,JavaScript支持实现继承,不支持接口继承,实现继承主要依靠原型链来实现的。

原型链

首先得要明白什么是原型链,昆明北大青鸟建议可以在一篇文章看懂proto和prototype的关系及区别中讲得非常详细

原型链继承基本思想就是让一个原型对象指向另一个类型的实例

添加方法

在给SubType原型添加方法的时候,如果,父类上也有同样的名字,SubType将会覆盖这个方法,达到重新的目的。但是这个方法依然存在于父类中。

记住不能以字面量的形式添加,因为,上面说过通过实例继承本质上就是重写,再使用字面量形式,又是一次重写了,但这次重写没有跟父类有任何关联,所以就会导致原型链截断。

问题

单纯的使用原型链继承,主要问题来自包含引用类型值的原型。

借用构造函数

此方法为了解决原型中包含引用类型值所带来的问题。

这种方法的思想就是在子类构造函数的内部调用父类构造函数,可以借助apply()和call()方法来改变对象的执行上下文

传递参数

借助构造函数还有一个优势就是可以传递参数

javascript类继承(Js的继承)

javascript什么是继承

JavaScript中的function是万能的,除了用于的函数定义,也可以用于类的定义。

JavaScript的继承,说起来也是有点怪,不像C++和一些面向对象的语言,他没有public,private等访问控制修饰,也没有implement或其他特定的符号来说明是实现继承。

关于javascript类的继承可以参考一下下面的这个例子。

script type=”text/javascript” 

function Person() {

    // 属性 

    this.Gender = “female”;

    this.Age = 18;

    this.Words = “Silence”;

    // 方法

    this.shouting = function() {

        alert(“开心哦!父类的方法”);

    }

}

// 继承

function Programmer() {

    this.base = Person;

}

Programmer.prototype = new Person;

// 为子类添加新的方法

Programmer.prototype.typeCode = function() {

    alert(“俺是敲代码的!IT民工,很不开心。子类的方法”);

}

// 调用示例

function sayHello() {

    var a = new Programmer();

    alert(a.Gender); // 调用父类的属性

    a.shouting(); // 调用父类的方法

    a.typeCode(); // 调用子类的方法

}        

sayHello();

/script

上例中,首先是声明一个person类,里面包含了一些属性和方法,然后接着又声明了一个programmer类,其中有个base属性,这个属性并不是

必需的,但是出于规范以及以后在查找对象所继承的类时都需要写上,然后是给programmer的原型对象(prototype)拷贝了person类;

于是便实现了类的继承。

参考资料:

vue模块中如何使用javascript类继承

1、首先确定一个vue模块,点击编辑。

2、其次选择继承方式为类继承。

3、最后直接点击选择使用javascript类继承即可保存。

Web前端学习之Javascript继承的常用4种方法

今天小编要跟大家分享的文章是关于Javascript继承的常用4种方法。相信很多学习web前端开发技术的小伙伴在学习前端开发的javascript部分的时候,在面向对象的部分就很难走下去了,主要的原因还是逻辑更加复杂了,需要理解的内容比直观的开发布局难一点。

在面向对象编程里,封装和继承是比较重要的,这中间,继承是相对而言比较难理解的,因为javascript的继承方式比较多,也有不同的优缺点。今天小编为大家带来这篇文章就是来和大家一起说一说Javascript继承的常用4种方法,希望能够对你有所帮助。

1、原型链继承

核心:将父类的实例作为子类的原型

缺点:父类新增原型方法/原型属性,子类都能访问到,父类一变其它的都变了

2、构造继承

基本思想

借用构造函数的基本思想就是利用call或者apply把父类中通过this指定的属性和方法复制(借用)到子类创建的实例中。

因为this对象是在运行时基于函数的执行环境绑定的。也就是说,在全局中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。

call、apply方法可将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象。

所以,这个借用构造函数就是,new对象的时候(new创建的时候,this指向创建的这个实例),创建了一个新的实例对象,并且执行Parent里面的代码,而Parent里面用call调用了Person,也就是说把this指向改成了指向新的实例,所以就会把Person里面的this相关属性和方法赋值到新的实例上,而不是赋值到Person上面,所以所有实例中就拥有了父类定义的这些this的属性和方法。

因为属性是绑定到this上面的,所以调用的时候才赋到相应的实例中,各个实例的值就不会互相影响了。

核心:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型)

缺点:方法都在构造函数中定义,

只能继承父类的实例属性和方法,不能继承原型属性/方法,无法实现函数复用,每个子类都有父类实例函数的副本,影响性能

3、组合继承

组合继承(所有的实例都能拥有自己的属性,并且可以使用相同的方法,组合继承避免了原型链和借用构造函数的缺陷,结合了两个的优点,是最常用的继承方式)

核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后再通过将父类实例作为子类原型,实现函数复用

缺点:调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)

4、寄生组合继承

核心:通过寄生方式,砍掉父类的实例属性,这样,在调用两次父类的构造的时候,就不会初始化两次实例方法/属性,避免的组合继承的缺点

缺点:堪称完美,但实现较为复杂

以上就是小编今天为大家分享的关于web前端学习之Javascript继承的常用4种方法的文章,希望本篇文章能够对正在学习web前端技术的小伙伴们有所帮助。想要了解更多web前端知识记得关注北大青鸟web培训官网。

文章转载自公众号:前端研究所

javascript类继承的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Js的继承、javascript类继承的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月31日 00:42:59
下一篇 2024年3月31日 00:51:13

相关推荐

  • javascript如何调试,js 调试

    网页显示javascript错误..怎么解决 网页显示javascript错误的解决办法:首先打开浏览器,选择Internet选项;然后切换到安全标签页中,单击自定义级别进入;接着选择“启用”项,并点击“是”;最后退出设置即可。请多刷新几次或者把浏览器关掉再打开。 检查JavaScript代码是否有语法或逻辑错误,并进行修复。更新您的浏览器版本或更换为兼容当…

    2024年5月23日
    4400
  • 包含javascript画圆的词条

    javascript画圆参数问题 1、第三个参数是圆的半径。第四个参数代表圆周起始位置。0 PI就是起始位置。沿顺时针路线,分别是0.5 PI(正下方),1 PI和5 PI(正上方),为画饼图提供了扇形范围的依据。 2、.box{width:200px;height:200px;border-radius:50%;overflow:hidden;} 试试这个…

    2024年5月23日
    4600
  • javascript常量,js中如何定义常量

    请问while(*p!=\0)这是什么意思啊 1、p明显是个指针,while(p)就是说指针如果有指向,就执行while下的语句,如果是0,也就是null,指针没有指向任何地址,也就是空指针。*p=head-next 这个可能是是树之类的数据结构。 2、\0就是0x00,代表字符串至此结束,退出循环。 3、while( *p ) 就是判断 (*p) 的值只要…

    2024年5月23日
    4300
  • 首字母大写javascript,首字母大写英语怎么说

    javascript怎么使用字符串函数进行首字母大写 js中转换字符串小写字母为大写字母的方法有:使用toUpperCase()方法、使用toLocaleUpperCase()方法。使用toUpperCase() 方法作用:把指定字符串中的小写字母全部转换为大写字母,最后返回一个新的字符串。 截取第一个位置变成大写,然后从第一个位置截取所有。 toLower…

    2024年5月23日
    4800
  • javascript吧,javaScript基础心得体会

    JavaScript真的容易学吗? 1、JavaScript是一种轻量级的编程语言,是一门非常容易入门的语言。JavaScript语法比较简单,应用面也会非常的广,有比较好的就业市场。 2、JavaScript面向对象、函数进阶、递归及其应用、正则表达式、ES6等等JS的高级课程内容。高级课程内容相对难度会有所提升,但是只要能理解了相应的编程思维,整体掌握难…

    2024年5月23日
    3900
  • 怎样学习javascript,怎样学好javascript

    javascript基础入门 1、JavaScript最初是由网景公司的Brendan Eich在1995年创建的,最初被称为LiveScript。后来,它被重命名为JavaScript,以更好地与Sun Microsystems的Java语言相匹配。 2、如果你想快速学会 JavaScript,你可能要掌握“跳章学习”的方法。左边可以看到本教程整个结构树。…

    2024年5月23日
    3600
  • javascript判断函数存在,js判断是否有值

    请教一个JavaScript函数判断问题 1、) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串。如:number,string,boolean,object,function,undefined(可用于判断变量是否存在)。 2、给函数做一个返回值,然后判断返回值就行了。 3、说明:isNaN() 函数可用于判断其参数…

    2024年5月22日
    4000
  • ipad可以编写javascript,iPad可以编写程序吗?

    苹果APP开发需要掌握哪种语言? 1、首先,要开发苹果app,必须要掌握苹果app开发工具,那就是Objective-c和c语言。在开发苹果app软件的时候,需要走以下流程。 2、Objective-C语言 Objective-C是C语言衍生出来的,继承了C语言的特性,属于面向对象的语言。Objective-C这是适用于IOS智能操作系统的APP开发语言,是…

    2024年5月22日
    4900
  • js怎么调用java的类,Java调用js引入三方包

    在html页面中如何用js调用java类 如果你只是测试java类中的一个方法的话,新建java-web项目 写一个无返回值的方法。 可以在HTML中嵌入JavaScript代码来实现。JavaScript语法很简单,百度一下就会的。给你个按钮调用JavaScript中方法的例子,希望对你有用。 一般的浏览器中是无法通过js调用本地java程序的,但是可以调…

    2024年5月22日
    4100
  • javascript验证用户名,js验证用户名与数据库中不能重复

    web中JavaScript的用户验证怎么写? 1、首先不管你是在EXCEL里检测用户存在还是在数据库里检测 始终需要ASP和JAVASCRIPT吧 假设你已经知道如何利用ASP判断EXECL或数据库是否有这个用户 ajax.asp //这个页面用于获取URL来的用户名做判断,判断数据库或EXCEL是否有用户。 2、临时按照你的要求写了一个,有什么问题可以再…

    2024年5月22日
    4000

发表回复

登录后才能评论



关注微信