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