js函数之call和apply
Posted 一杯清泉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js函数之call和apply相关的知识,希望对你有一定的参考价值。
一、含义
function test()
console.log('----')
//执行
test();
test.call()
结果一致,调用test()默认会调用call,二者效果一致,call省略掉了。
二、改变this指向
call还有一个很重要的功能是改变this的指向。
function Car(brand, color)
this.brand = brand;
this.color = color;
this.run = function ()
console.log('run 方法')
let newCar =
age: 30
1、不用 call
console.log('newCar', newCar)
打印结果:
2、使用 call
//参数1:对象,参数2,3,4……:其他参数
Car.call(newCar, '兰博基尼', 'red')
console.log('newCar', newCar)
打印结果:
"brand": "兰博基尼",
"color": "red"
可以看出改变了this 的指向,和apply的区别是后面是一个数组,其他没啥区别,均可以改变this 指向Car.apply(newCar, ['兰博基尼', 'red'])。
三、应用
function Compute()
this.plus = function (a, b)
console.log(a + b)
this.minus = function (a, b)
console.log(a - b)
function FullCompute()
Compute.apply(this)
this.mul = function (a, b)
console.log(a * b)
this.div = function (a, b)
console.log(a / b)
const compute = new FullCompute();
compute.plus(1,1);
compute.minus(1,1);
compute.mul(1,1);
compute.div(1,1);
打印结果:
四、全局this和函数this
全局定义的this和函数内部定义的 this 相当于 window,例如:
function test()
this.a = 1;
let b = 2
test();
console.log(a); // 1
console.log(b); // b is not defined
以上是关于js函数之call和apply的主要内容,如果未能解决你的问题,请参考以下文章