<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript函数进阶第5课</title>
</head>
<body >
<script type="text/javascript">
//javascript中任何函数都有两个属性:length与prototype
function test(num1,num2,num3){
alert(test.length); //函数名.length属性返回当前函数的形参个数
alert(arguments.length); //arguments.length返回当前函数实际传入的参数的个数
}
test();
//javascript中任何函数都有两个非继承而来的两个方法:apply()与call()
//这两个方法都是在特定烦人作用域中调用函数,实际上等于设置函数体内this对象的值
//apply()接收两个参数:第一个是参数是函数运行的作用域;另一个参数是数组(也可以是数组实例也可以是arguments对象)
function sum(a,b) {
return a+b;
}
function applySum(a,b) {
return sum.apply(this,[a,b]);
}
function applySum2(a,b) {
return sum.apply(this,arguments)
}
alert(sum(10,20));
alert(applySum(10,20));
alert(applySum2(10,20));
//call()方法第一个参数也是函数运行的作用域,但第二个参数都是残敌参数,传递给函数的实际参数需要逐个列举出来(用逗号隔开)
function callSum(x,y) {
return sum.call(this,x,y);
}
alert(sum(30,20));
alert(callSum(30,20));
//apply()方法和call()方法通常用来扩充函数运行的作用域而非单纯地传递参数
var color="red";
var o={color:"blue"}
function sayColor() {
alert(this.color);
}
sayColor();// 全局变量red
sayColor.call(this);// 全局变量red
sayColor.color(window); // 全局变量red
sayColor.call(o); //作用域o里面的属性blue
</script>
</body>
</html>
相关文章
- 好的提高代码质量的方法有哪些?有什么经验和技巧?
- pytest学习和使用23-通俗易懂的聊聊allure常用特性集合及使用方法说明
- PyTorch 之 简介、相关软件框架、基本使用方法、tensor 的几种形状和 autograd 机制
- js中的4种函数调用模式:函数调用、方法调用、构造器调用、间接调用
- Object类中equals,hashCode和toString方法的学习
- Java中Object类的equals()和hashCode()方法深入解析
- cmd命令行执行java程序的编译和执行的方法及可能出现找不到或无法加载主类的错误的解决
- 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_16-抽象方法和抽象类的使用
- input 标签的 disabled 和 readonly 属性
- 对于Java静态成员变量和非静态成员变量的一些学习方法