`
rockyuse
  • 浏览: 196630 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

模拟apply和call

 
阅读更多
<html>
<head>
<script type="text/javascript">
Function.prototype.Apply = function (obj, arr) {
	obj = obj || window;
	obj._tempFunction = this;
	var rv;
	if (!arr) {
		rv = obj._tempFunction();
	} else {
		var args = [];
		for (var i = 0, len = arr.length; i < len; i++) {
			args.push('arr[' + i + ']');
		}
		rv = eval("obj._tempFunction(" + args + ")");
	}
	delete obj._temFunction;
	return rv;
}
Function.prototype.Call = function () {
	return this.Apply(Array.prototype.shift.Apply(arguments), arguments);
}

var obj = {};
function f(a,b,c) {
	console.log(this == obj);//看看Apply和Call 是不是把函数内的this 指向了 obj对象
	console.log(a + b + c);
}
f(1, 2, 3);
f.Apply(obj, [4, 5, 6]);
f.Call(obj, 7, 8, 9);

</script>
</head>
<body>
</body>
</html>

 

分享到:
评论

相关推荐

    JavaScript中的apply和call函数详解_.docx

    在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向以及动态传递参数。这两者的主要区别在于参数的传递方式。 首先,`this`在JavaScript中是一个关键字,它在不同...

    理解JavaScript的caller callee call apply

    #### call和apply方法:灵活的函数调用 `call`和`apply`是`Function.prototype`上的两个方法,它们允许开发者以不同的上下文(`this`值)调用函数,并提供参数。这两个方法的主要区别在于参数的传递方式: 1. **`...

    apply和call方法定义及apply和call方法的区别

    在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都属于`Function.prototype`上的方法,允许我们改变函数执行时的上下文(即`this`值)以及灵活地传递参数。虽然这两者的主要作用相似,但它们在...

    js中call与apply的用法小结

    在JavaScript中,`call` 和 `apply` 是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文,即`this`的指向。本文将深入探讨这两种方法的用法及其在实际编程中的应用。 ### 1. `call` 的基本用法 `...

    Js的call与apply1

    JavaScript中的`call`和`apply`是两种非常关键的方法,它们允许我们改变函数内部`this`的指向,同时也为实现模拟继承提供了可能。虽然JavaScript不直接支持类继承,但通过`call`和`apply`,我们可以实现类似的效果。...

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

    JavaScript中的`call`和`apply`是两种非常重要的方法,它们都用于改变函数内部`this`的指向,并执行该函数。这两个方法都是Function对象的原型方法,因此所有的函数都具备`call`和`apply`。 1. `call`方法: - `...

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

    `call`和`apply`在模拟类继承时特别有用。在JavaScript中,由于没有真正的类概念,我们可以使用构造函数来模拟。例如,`extendAB`函数可以通过`call`或`apply`调用来继承`baseA`和`baseB`的属性和方法。在提供的继承...

    apply应用小结

    2. 示例代码:通过具体的代码示例展示`apply()`在不同场景下的应用,如数组的累加、模拟`call()`和`bind()`等。 3. 深入理解`apply()`:如何利用`apply()`进行对象属性的遍历,或者在继承链中设置`this`的值。 4. ...

    Vuact#Blog#JavaScript深入 模拟实现call、apply1

    (1)call 的第一个参数改变了this 的指向 (2)call 将后面的参数依次赋给了bar函数的形参 (3)执行bar函数 (1)改变this指向:我们将

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

    通过call和apply可以调用某个函数,并且显式地指定该函数内部的this变量的值。 ### call和apply的基本概念 call方法接受一个参数列表,而apply方法接受一个包含多个参数的数组。两者第一个参数都是要设置为函数...

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

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

    Javascript 中的 call 和 apply使用介绍

    在JavaScript中,由于没有传统的类继承,而是基于原型的继承,`call`和`apply`可以用来模拟类的继承。例如: ```javascript function Person(name, age) { this.name = name; this.age = age; this.alertName = ...

    Javascript中call和apply函数的比较和使用实例

    在JavaScript中,`call()` 和 `apply()` 是两种非常重要的函数调用方式,它们都用于改变函数内部 `this` 的指向。尽管它们的作用相似,但使用方式略有不同。 `call()` 方法允许你调用一个函数,并指定这个函数的 `...

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

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

    js代码-手写apply()和call()

    1. **模拟继承**:通过`call()`或`apply()`,我们可以将一个对象的方法“借用”到另一个对象上,实现类似于面向对象的继承。 2. **数组求和/计算**:`apply()`可以方便地处理数组求和或计算等操作,如`Math.max....

    javascript call和apply方法

    在实际开发中,`call`和`apply`常常用于继承、对象的模拟以及在不支持箭头函数(箭头函数不会创建自己的`this`,而是捕获其所在(定义时)的作用域的`this`值)的环境下实现事件处理等场景。例如,当你需要在不同的...

    js代码-apply/call/bind的例子(不带参数)

    在JavaScript中,`apply()`, `call()`, 和 `bind()` 是函数对象的三个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`关键字指向的对象)以及执行函数的方式。这些方法是JavaScript面向对象编程中的...

    从JQuery源码分析JavaScript函数的apply方法与call方法

    - 构造函数模拟:通过`call`或`apply`,可以不使用`new`关键字创建新对象,这在某些场景下可能很有用。 在jQuery源码分析中,`$.each`使用`call`或`apply`来迭代数组或对象,并在每次迭代中将当前元素和索引传递给...

Global site tag (gtag.js) - Google Analytics