飞行的蜗牛

vuePress-theme-reco 极客学长    2013 - 2025
飞行的蜗牛 飞行的蜗牛

Choose mode

  • dark
  • auto
  • light
首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
author-avatar

极客学长

154

文章

151

标签

首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
  • javascript中call和apply的区别

javascript中call和apply的区别

vuePress-theme-reco 极客学长    2013 - 2025

javascript中call和apply的区别


极客学长 2017-02-21 0 javascript

Javascript 中有2个方法用来调用一个对象的一个方法,但是以另一个对象替换当前对象,也就是替换对象的上下文,更改对象的内部指针,简单来说就是更改this指向的内容。

这两个方法分别是 call 和 apply,他们的作用几乎相同,只是在使用的时候有小小的差别。

首先看下这2个函数的原型

call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

apply(thisObj, args);

call函数和apply方法的第一个参数都是要传入给当前对象的对象,即函数内部的this。后面的参数都是传递给当前对象的参数。

其实他们的区别就在传参上面:

call的参数必须一个一个传进去,但是apply的参数可以作为一个数组一次性传进去

那么很显然使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。

function Person(name,age) {
	console.log(name);
	console.log(age);
}

function Teacher(name, age) {

	Person.apply(this, arguments);
	this.name = name;
	this.age = age;
}

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

var t = new Teacher('zhangsan', 30);
var s = new Student('lisi', 10);
//输出
//zhangsan
//30
//{ '0': 'lisi', '1': 10 }
//undefined

本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01

javascript 实现继承的5种方法 charles 抓包工具安装与使用