js call 方法和 apply

call() 改变作用域的this 的指向

//在浏览器的window 全局对象添加一个name,在docment对象添加一个name,声明一个对象添加name属性

window.name = '李一灵';

document.name = '李流云';

const obj = {name:'王二蛋'}

//声明一个函数

let fn = function (){ console.log(this.name) }

fn()// 李一灵

 fn.call(this)//当前this 指向的浏览器的全局对象window   李一灵

fn.call(document) //  '李流云'

fn.call(obj) //王二蛋

 

apply() 方法 跟call 一样的作用,改变作用域的this的指向,不同的是,call方法如果需要传参的话要一个一个的传 如:call(this,参数1,参数2,参数3,参数4...)

apply()传的必须是个数组不然会报错 apply(this,[参数1,参数2,参数3,参数4...])

或者当前函数arguments apply(this,arguments);

function age(num){

this.age = num;

this.describe = function(){

console.log(this.age)

}

}

function Myage(num){

age.apply(this,arguments);

//age.apply(this,[num])  同理

//用call 方法  age.call(this,num) 一样的

}

let me = new Myage('22');

me.describe() //22  

 

转载于:https://www.cnblogs.com/yj19930530/p/10196657.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值