js中继承的几种用法总结(apply,call,prototype)

JS中继承的几种用法总结(apply, call, prototype)

在JavaScript中,继承是一种通过一个对象获取另一个对象属性和方法的方式。在JavaScript的原始版本中,没有标准的面向对象编程方式,但是通过使用JavaScript中的一些基本原则和技巧,我们可以轻松地实现继承。

在JavaScript中,我们可以使用apply,call以及原型链继承方式来实现对象的继承。接下来我们将对这些继承方式进行详细介绍。

  1. apply与call的继承方式

apply和call是两种JS中调用函数的方式,它们可以改变函数执行时的上下文环境。其中,apply方法可以给一个对象的属性或方法赋值,使用方法是:apply(thisObj, args)。

下面是apply方法继承的代码示例:

function Person(name) {
  this.name = name;
}

function Student(name, age) {
  Person.apply(this, [name]);
  this.age = age;
}

var s = new Student("张三", 18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

这里,Student继承了Person的属性和方法,通过调用Student函数的apply方法,将Person对象的属性和方法复制给Student对象。

同样,有一个call方法,使用方法是:call(thisObj, arg1, arg2, ...),它也可以实现继承。

function Person(name) {
  this.name = name;
}

function Student(name, age) {
  Person.call(this, name);
  this.age = age;
}

var s = new Student("张三", 18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

相比于apply,call的使用方法略有不同,更适合参数刚好相符的情况。

  1. 原型链继承

原型链继承是指在子类中通过prototype对象引用父类的prototype属性,从而实现继承。

function Person(name) {
  Person.prototype.name = name;
}

function Student(age) {
  this.age = age;
}

Student.prototype = new Person("张三");

var s = new Student(18);
console.log(s.name); //输出张三
console.log(s.age); //输出18

这里,子类Student通过prototype对象继承了父类Person的属性和方法,从而实现了继承。

总结:

在JavaScript中,我们可以通过使用apply,call和原型链方式来实现对象的继承。其中,apply和call的使用方法相对较为简单,但是只能继承属性,而无法继承方法。原型链继承方式复杂一些,但可以同时继承属性和方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中继承的几种用法总结(apply,call,prototype) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript模拟实现ajax加载框实例

    以下是使用 JavaScript 模拟实现 ajax 加载框的完整攻略: 实现思路 创建一个遮罩层,并设置其 z-index 值为一个比较大的数字,遮罩整个页面; 在遮罩层中添加一个加载框元素,并使用 CSS 进行设置和样式定制; 使用 JavaScript 编写一个可以请求服务器数据的对象,以及在请求过程中显示遮罩层及加载框的方法; 在处理完请求后,隐藏遮…

    JavaScript 2023年6月11日
    00
  • JS实现中英文混合文字溢出友好截取功能

    以下是JS实现中英文混合文字溢出友好截取功能的完整攻略。 什么是中英文混合文字溢出? 中英文混合文字溢出通常是指,在一个容器中,两种不同字符(例如汉字和英文字符)混合排列,当容器宽度不够时,字符溢出容器的情况。由于汉字和英文字母的宽度不同,所以溢出部分难以准确的识别和截断,需要特殊处理。 如何实现中英文混合文字溢出友好截取? 第一步:计算字符长度和容器宽度 …

    JavaScript 2023年5月28日
    00
  • JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)

    JS数组排序技巧汇总 在 Javascript 中,排序操作是非常常见的操作。本篇文章将会介绍常见的几种排序算法:冒泡排序、选择排序、插入排序、快速排序和希尔排序。同时,我们也会讲解如何使用这些算法在 Javascript 中进行排序。 冒泡排序 冒泡排序是最基础的算法之一,也是最容易理解的算法之一。它通过依次比较相邻的两个元素,把大的元素往后排,小的元素往…

    JavaScript 2023年5月27日
    00
  • 详解webpack-dev-server使用http-proxy解决跨域问题

    Webpack-dev-server 是 webpack 中提供的一个开发服务器,使我们可以在开发环境中快速开发,通过 webpack-dev-server 实现的 HMR(hot module replacement)功能,可以很方便的在不刷新浏览器页面的情况下实现模块热替换,极大地提升了开发效率。 在开发过程中,我们经常需要和服务器端进行 API 接口的…

    JavaScript 2023年6月11日
    00
  • JS实现电话号码的字母组合算法示例

    JS实现电话号码的字母组合算法示例可以用来解决以下问题:给定一个数字字符串,返回该数字字符串代表的电话号码的所有字母组合。 算法思路 该算法可以使用递归的方式进行实现。在递归过程中,所有可能的组合都存储在一个数组中,初始值为[“”]。在每次递归过程中,取出数组中的第一个元素,根据当前数字所代表的字母,依次添加到该元素的末尾,生成新的字符串插入到数组中。具体实…

    JavaScript 2023年5月28日
    00
  • 用JavaScrip正则表达式验证form表单的方法

    下面是使用JavaScript正则表达式验证表单的攻略: 一、需求分析 JavaScript正则表达式可以对表单中的输入内容进行有效地验证。在使用正则表达式之前,首先需要明确以下几点: 要验证哪些内容,如表单中的用户名、密码、邮箱等; 需要验证的内容的限制条件,如密码必须包含大小写字母和数字等; 如果验证不通过,需要如何提示用户进行正确的输入。 二、编写正则…

    JavaScript 2023年6月10日
    00
  • JS库之Particles.js中文开发手册及参数详解

    首先,”JS库之Particles.js中文开发手册及参数详解”是一篇介绍Particles.js库的文章,该库可以用于在网页中生动呈现粒子效果,如雨、雪、烟雾等,从而增强网页的视觉效果。下面我们就来详细讲解一下这篇文章的完整攻略。 一、简介 首先,在文章的简介部分,作者简要介绍了Particles.js库的特点和优势,同时引用了该库的GitHub开源地址,…

    JavaScript 2023年6月11日
    00
  • js函数中onmousedown和onclick的区别和联系探讨

    我们就按照以下步骤来讲解 js 函数中 onmousedown 和 onclick 的区别和联系。 1. onmousedown 和 onclick 的作用 在开始讲解 onmousedown 和 onclick 的区别之前,我们先来了解一下它们的作用。 onmousedown:当鼠标按下某个元素时触发。 onclick:当鼠标点击某个元素时触发。 这两个事…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部