javascript call apply 和arguments

call apply arguments

call apply arguments

arguments is an array-like object, but he is not an array

function fun2(){
    
    
					console.log(Array.isArray(arguments));
				}
				fun2();
-->false

<script type="text/javascript">
			//call()和apply()
/* 				-这两个方法都是函数对象的方法,需要通过函数对象来调用-当对函数调用cal1()和apply()都会调用函数执行
				-在调用cal1()和apply()可以将一个对象指定为第一个参数
				此时这个对象将会成为函数执行时的this
				
				- call()方法可以将实参在对象之后依次传递
				- apply()方法需要将实参封装到一个数组中统─传递- this的情况:
				1.以函数形式调用时,this永远都是window
				2.以方法的形式调用时,this是调用方法的对象
				3.以构造函数的形式调用时, this是新创建的那个对象
				4.使用call和apply调用时,this是指定的那个对象

 */		
		</script>
<script type="text/javascript">
			//在调用函数时,浏览器每次都会传递进两个隐含的参数;1.函数的上下文对象this
				/* 2.封装实参的对象arguments
				- arguments是一个类数组对象,它也可以通过索引来操作数据,也可以获取长度-在调用函数时,我们所传递的实参都会封						装到arguments中 */
				//他不是数组
				function fun(a, b){
    
    
					//获取实参个数,跟定不定义形参没有关系
					console.log(arguments.length);
					//获取实参,
					console.log(arguments[0]);
				}
				fun(10,20,"hrlo");
				
				//-它里边有一个属性叫做callee,
				// 这个属性对应一个函数对象,就是当前正在指向的函数的对象

		</script>

Guess you like

Origin blog.csdn.net/weixin_44154094/article/details/112465743
Recommended