本次没有课程笔记,今天有一点事情没有及时更新知识体现,但提升部分照样更新,依旧是有关函数的内容。
提升笔记
Function方法
Function.prototype.apply
在一个对象的上下文中应用另一个对象的方法;参数能够以数组形式传入。
Function.prototype.bind()
bind()方法会创建一个新函数,称为绑定函数。当调用这个绑定函数时,绑定函数会以创建它时传入
bind()方法的第一个参数作为this,传入bind()方法的第一个
Function.prototype.call()
在一个对象的上下文中应用另一个对象的方法;参数能够以列表形式传入。
const person1={firstName:'三',lastName:'张'};
console.log(getFullName.call(person1));// 张三
const logger ={
type:'info',
count:0,
log:function(message){
console[this.type](message,++this.count);
},
}
//call apply,bind 不能绑定this上下文,还能绑定部分参数
setInterval(logger.log.bind(logger,'heart beat'),1000);
Function类
函数是Function类的实例。我们可以用Function类动态创建函数对象。
const sum = new Function('a', 'b', 'return a + b');
console.log(sum(2, 6));
// expected output: 8
Function 创建的函数只能在全局作用域中运行。
语法
new Function ([arg1[, arg2[, ...argN]],] functionBody)
arg1, arg2, ... argN 是被函数使用的参数的名称必须是合法命名的。
functionBody是一个含有包括函数定义的 JavaScript 语句的字符串。
在使用call()方法时,传递给函数的参数必须逐个列举出来
function sum(num1, num2){
return num1 + num2;
}
function callSum(num1, num2){
return sum.call(this, num1, num2);
}
alert(callSum(10,10)); //20
apply()方法接收两个参数:一个是在其中运行函数的作用域,另一个是参数数组
function sum(num1, num2){
return num1 + num2;
}
function callSum1(num1, num2){
return sum.apply(this, arguments); // 传入 arguments 对象
}
function callSum2(num1, num2){
return sum.apply(this, [num1, num2]); // 传入数组
}
alert(callSum1(10,10)); //20
alert(callSum2(10,10)); //20
基础入门(4)完