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

yizhihongxing

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日

相关文章

  • Python3实现飞机大战游戏

    Python3实现飞机大战游戏攻略 1. 准备工作 在开始编写游戏代码之前,需要安装好Pygame库。 在Windows系统下可以使用pip命令进行安装: pip install pygame 在Linux系统下可以使用以下命令安装: sudo apt-get install python3-pygame 2. 创建窗口 使用Pygame库创建游戏窗口的代码…

    JavaScript 2023年6月11日
    00
  • JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍

    JavaScript 中定义函数有两种常用的方式:使用函数表达式(function expression)和函数声明(function declaration)。在使用函数表达式时,可以使用 var 声明一个变量并赋值为函数,也可以使用 function 关键字直接定义函数。那么 var foo = function () {} 和 function foo…

    JavaScript 2023年5月27日
    00
  • js中forEach,for in,for of循环的用法示例小结

    请看下面的文本。 js中forEach,for in,for of循环的用法示例小结 在JavaScript中,有多种迭代数组和对象的方式。 下面是三种常见的循环的用法: forEach,for in,和for of。接下来将详细介绍它们的用法和示例。 forEach循环 JavaScript中的forEach()方法用于迭代逐个数组元素,并为每个元素执行回…

    JavaScript 2023年5月28日
    00
  • 硬盘浏览程序,保存成网页格式便可使用

    这里我们将详细讲解如何使用“硬盘浏览程序”将网站保存成网页格式。请按照以下步骤进行操作: 步骤一:下载硬盘浏览程序 首先你需要下载一个名为“硬盘浏览程序”的工具,这个工具可以允许你在本地计算机上浏览网站。你可以在以下链接中下载该软件:https://www.allsimple.net/hdd-1015.shtml 步骤二:安装硬盘浏览程序 下载后,你可以直接…

    JavaScript 2023年6月10日
    00
  • 详解ES6中的let命令

    我来为你详细讲解ES6中的let命令的完整攻略。 什么是let命令 在ES6中,let命令是用来声明变量的,与之前的var命令不同的是,let声明的变量只在块级作用域内部有效,不存在变量提升的现象,且不可重复声明。 块级作用域 什么是块级作用域?块级作用域就是在花括号内部的作用域,通常用来限制变量的作用范围。 示例1 { let a = 1; var b =…

    JavaScript 2023年6月11日
    00
  • JavaScript 检测文件的类型的方法

    JavaScript 检测文件类型的方法可以通过文件类型的扩展名或者文件的 MIME 类型来进行判断。下面是一些具体的步骤和示例说明。 通过文件类型的扩展名进行判断 JavaScript 可以通过 String 对象的 endsWith() 方法或者正则表达式匹配文件名的后缀来进行文件类型的判断。 使用 String.endsWith() 方法 endsWi…

    JavaScript 2023年5月27日
    00
  • Android中WebView无法后退和js注入漏洞的解决方案

    一、Android中WebView无法后退的解决方案 问题描述:在Android中使用WebView时,通过back键无法返回上一个网页,点击后退按钮也没有用。 解决方案:Android中WebView默认是不支持返回上一个网页的,需要在WebView中重写onKeyDown方法,当按下back键时,让WebView返回上一个网页。 示例代码: @Overr…

    JavaScript 2023年6月11日
    00
  • JavaScript常见的函数中的属性与方法总结

    我来为你讲解一下“JavaScript常见的函数中的属性与方法总结”的攻略。 标题 JavaScript常见的函数中的属性与方法总结 简介 JavaScript中的一等函数使得函数成为了一等公民,其优美的语法和强大的功能也成为了其被广泛应用的原因。在使用JavaScript函数时,熟悉函数常用的属性和方法,能够让我们更加熟练地使用函数,提高编码效率和代码质量…

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