`

javascript随心总结 arguments,call与apply

阅读更多
        //js杂谈
	//主要想到什么就写下来
        //测试的版本还是chrome  多少忘了
	//第一个arguments
	
	//第一个作用
	var toString={}.toString;
	var slice=[].slice;
	function  aa(){
		console.info(arguments.callee);//返回的是这函数aa引用
		//下面两个证明他是非常像数组
		console.info(arguments);
		console.info(arguments.length);
		//为什么不是数组呢
		console.info(toString.call(arguments));//[object Arguments]  到此如何
		//转化为数组//突然想到为什么能转化数组- -,写着写着就想到了这个
		console.info(slice.call(arguments));
		console.info(toString.call(slice.call(arguments)));//[object Array]
	}
	aa();
	//有什么用呢,递归有用
	//1-n的乘法
	function bb(n){
		if(n==1){
			return 1;
		}
		return n*arguments.callee(n-1);
	}
	console.info(bb(5));// 是不是特别像数组 但不是真正的数组
	
	//还有strict mode ,会被禁用,不过严格模式在火狐下会有bug
	
	//第二个 看过我以前写的博客的朋友,都应听到类数组这个东东
	//像数组的对象
	aa("a","b","c","d");
	
	//好吧我们将其变为真的数组
	//我记得在数组总结中有这样的方法slice
	
	//当然根据arguments可实现像java这样的重载功能
	//就是根据arguments参数长度,和其值执行不同的操作
	//不地感觉怎么就是感觉不妥 = =
	
	//第二个就是call 与apply
	//二者有一个不同,就是第一个要一个一个的传参,第二个可以传个arguments
	//传参不是这两个函数的真面目
	//可以随时函数执行的上下文环境  是不是很厉害
	var x="window";
	var obj1={
		x:"xx",
		xxxx:window.alert,
		xx:function(){
			alert(this.x);
		},
		xxx:function(){
			//alert(this);//object
			alert(x);
		}
	};
	var obj2={
		x:"xx2",
		xx:function(){
			alert(this.x);
		},
		xxx2:function(){
			
			alert(x);
		}
	};
	//看变化
	obj1.xx();
	obj1.xx.call(this);
	obj1.xx.call(obj2);
	//再来三个,有什么差别
	//obj1.xxx();
	//obj1.xxx.call(this);
	//obj1.xxx.call(obj2); //弹出来都是window
	//alert方法在window,所以这个上下文
	//上下文环境由调用时决定
	//感觉也可以离解为一个方法里又包了一个alert函数,由闭包的意思,所以上下文为window
	//若有错误请指出
	
	var a=window.alert;
	console.info(a);
	//a.call(obj1,x);//我想是js原生的一些方法不允许修改,想证明就是不行呢
       //到此结束

 

分享到:
评论

相关推荐

    理解JavaScript的caller callee call apply

    ### 理解JavaScript中的`caller`...综上所述,理解`caller`、`callee`、`call`、`apply`以及`arguments`对象在JavaScript编程中至关重要,它们不仅增强了函数的灵活性和复用性,还提供了深入分析和调试代码的强大工具。

    【JavaScript源代码】JavaScript函数之call、apply以及bind方法案例详解.docx

    JavaScript中的call、apply和bind方法都是用来改变函数调用时的上下文(即this值)以及传递参数。它们之间的相同点在于,都能够指定函数执行时的this对象,并且都能接收参数。不同点在于它们的调用方式和执行时机。 ...

    javascript中apply和call方法的作用及区别说明

    1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...

    跟我学习javascript的call(),apply(),bind()与回调

    与 call() 相似,`thisObj` 是函数内 this 指向的对象,`argArray` 是一个数组或者是一个类数组对象,比如 arguments 对象,代表了传给函数的参数列表。 继续上面的例子: ```javascript function callSum(num1, ...

    Javascript - 全面理解 caller,callee,call,apply (转载)

    `apply`与`call`相似,只是传递参数的方式不同: ```javascript sayHello.apply(obj, ['World']); // 输出 "Hello, World" ``` 在这两个示例中,`obj`作为`sayHello`函数的上下文,使得`this.name`能够正确地引用`...

    详解JavaScript函数callee、call、apply的区别

    JavaScript中的`callee`、`call`和`apply`都是与函数有关的重要概念,它们提供了不同的方式来处理函数调用和上下文。以下是这三个特性的详细解释: **arguments.callee** `arguments.callee`是一个在函数内部可以...

    javascript利用apply和arguments复用方法

    总结来说,`apply`和`arguments`在JavaScript中提供了灵活的方法复用机制,允许我们改变函数的执行环境并处理动态参数。通过`apply`,我们可以将函数绑定到特定的对象上,同时传递任意数量的参数。`arguments`对象则...

    js中call与apply的用法小结.docx

    总结来说,`call`和`apply`在JavaScript编程中扮演了关键角色,它们提供了改变函数执行上下文的能力,从而支持了函数绑定、继承和参数灵活传递等高级功能。理解并熟练运用这两个方法对于提升JavaScript编程技能至关...

    理解Javascript函数形式参数与arguments

    理解Javascript函数形式参数与arguments 在JavaScript中,函数的形式参数和arguments之间存在着微妙的关系。为了深入理解这方面的知识,我们需要首先了解形式参数和实际参数的概念。形式参数指的是定义方法时所明确...

    Javascript 中的 call 和 apply使用介绍

    JavaScript中的`call`和`apply`是两种非常重要的函数调用方式,它们允许开发者改变函数执行的上下文,即函数内部的`this`值。这两个方法的主要区别在于传递参数的方式。 `call`方法的语法是`call(obj, arg1, arg2, ...

    Javascript - 全面理解 caller,callee,call,apply

    在JavaScript的世界里,caller、callee、call和apply是四个非常重要的概念,它们涉及到函数的调用方式和执行上下文。这些知识点对于深入理解和优化代码至关重要,尤其在处理高阶函数和面向对象编程时。 首先,让...

    详解js中call与apply关键字的作用

    在JavaScript中,call与apply是两个非常重要的关键字,它们的功能是改变函数执行时的上下文,也就是函数体内的this指向。通过call和apply可以调用某个函数,并且显式地指定该函数内部的this变量的值。 ### call和...

    javascript下arguments,caller,callee,call,apply示例及理解

    JavaScript中arguments、caller、callee、call和apply是与函数相关的几个重要概念和对象。它们为JavaScript的函数提供了非常灵活的功能,特别是在处理函数参数和调用上下文方面。接下来,将对这些概念逐一进行详细...

    前端大厂最新面试题-bind_call_apply.docx

    _bind、call、apply 是 JavaScript 中的三个函数方法,用于改变函数的执行上下文,即改变函数中的 this 指向。下面我们将详细讲解这三个方法的使用和区别。 作用 _bind、call、apply 三者都是改变函数执行时的上...

    js中继承的几种用法总结(apply,call,prototype)

    在JavaScript中,实现对象继承主要有三种方式:原型链继承(prototype)、构造函数继承和call/apply继承。下面将分别详细介绍这三种继承方式的具体用法和实现原理。 1. 原型链继承(prototype) 原型链继承是...

    JavaScript中的call方法和apply方法使用对比

    JavaScript中的call方法和apply方法是Function对象自带的两个内置方法,它们都可以改变函数体内this的指向,让一个拥有私有this的函数能够借用另一个对象的this来执行,并能传递参数。这两个方法在很多情况下可以...

    JS中call/apply、arguments、undefined/null方法详解

    总结,`call`和`apply`提供了改变函数执行上下文的能力,而`arguments`对象则允许我们方便地访问函数调用时的所有参数,这些都是JavaScript灵活性和动态性的体现。在实际开发中,掌握这些知识点对于编写高效和灵活的...

    在JavaScript中call()与apply()区别

    与call()相似,apply()的第一个参数也是用来指定函数内部this的指向,但是apply()要求第二个参数必须是数组或者类数组对象(如arguments),然后这个数组中的元素将作为单独的参数传递给函数。如果传入的第二个参数...

Global site tag (gtag.js) - Google Analytics