apply & call
Function 对象 调用 apply(obj,args),call(obj,args) ,就好像 obj 自己拥有了 对应的 Function 对象 一样,
------
apply()
function.apply(thisobj, args)
invokes the specified function as if it were a method of thisobj, passing it the arguments contained in the args array.
It returns the value returned by the function invocation.
Within the body of the function, the this keyword refers to the thisobj object.
The args argument must be an array or an Arguments object.
Use Function.call( ) instead if you want to specify the arguments to pass to the function individually instead of as array elements.
------
call()
function.call(thisobj, args...)
only difference to apply() is:
call() accept args individually,
apply() accept args as array or object.
------
例子:
*
js (inherit_test.js)
/**
* inherit test
*/
/** Fruit class,superclass */
function Fruit(name,description){
this.name = name;
this.description = description;
}
Fruit.prototype.sayHello = function() {
alert('Hello,I am '+ this.name);
};
/** Apple class,subclass */
function Apple(name,description,price){
// 由 Fruit 构造函数调用
Fruit.call(this,name,description);
this.price = price;
}
Apple.prototype.sayHello = function(){
// 由 Fruit.sayHello 函数调用
Fruit.prototype.sayHello.call(this);
};
*
html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
<script type="text/javascript" src="inherit_test.js"></script>
</head>
<body>
<input type="button" value="hello fruit" onclick="var fru = new Fruit('fruit','');fru.sayHello();" /><br />
<input type="button" value="hello apple" onclick="var ap = new Apple('apple','');ap.sayHello();" /><br />
</body>
</html>
*
------
分享到:
相关推荐
JavaScript中call与apply方法
淡淡简单描述javascript中方法apply和call
在JavaScript中,`call()`, `apply()`, 和 `bind()` 都是与函数调用相关的三个重要方法,它们都允许我们改变函数内部的 `this` 指向,实现函数的灵活应用和复用。这三种方法在处理对象方法和上下文时尤其有用。 1. ...
在JavaScript中,`apply`和`call`方法都是Function对象的内置方法,它们的主要作用是改变函数调用时的上下文(即`this`值),并允许我们在不同对象上执行同一方法,从而实现方法的借用。这两者在功能上相似,但参数...
### JavaScript中的apply与call用法详解 #### 一、引言 在JavaScript中,`apply`与`call`是两个非常重要的函数,它们都属于`Function.prototype`的一部分,因此每一个函数对象都拥有这两个方法。这两个方法的主要...
JavaScript中的this、new、apply和call是理解JavaScript面向对象编程的关键知识点。首先,我们要知道,this关键字在JavaScript中表示当前上下文的对象,但它并不像Java中的this那样始终指向同一个对象。JavaScript的...
bind,apply,call的用法及区别
在JavaScript中,`call`和`apply`是两个非常重要的方法,它们都用于改变函数调用时的上下文(即`this`的值),并且可以灵活地传递参数。本篇文章将深入探讨这两个方法的用法、区别以及实际应用场景。 `call`方法...
在JavaScript中,实现对象继承主要有三种方式:原型链继承(prototype)、构造函数继承和call/apply继承。下面将分别详细介绍这三种继承方式的具体用法和实现原理。 1. 原型链继承(prototype) 原型链继承是...
apply和call,它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数的方式有所区别: Function.prototype.apply(thisArg,argArray); Function.prototype.call(thisArg[,arg1[,arg2…]]); 从函数原型...
### JavaScript中apply、call和bind的用法区分 在JavaScript编程中,`apply`、`call`和`bind`这三个方法被广泛用于改变函数内部`this`的指向,这对于理解和编写复杂的JavaScript代码至关重要。虽然它们的功能相似,...
在JavaScript中,`apply`和`call`是两种非常重要的函数调用方式,它们都用于改变函数内部`this`的指向以及动态传递参数。这两者的主要区别在于参数的传递方式。 首先,`this`在JavaScript中是一个关键字,它在不同...
在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文,即改变`this`的指向。这两个方法的主要区别在于它们处理参数的方式。 `call`方法允许你指定一个对象来替代原...
### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...
为了控制函数的this指向,JavaScript提供了apply、call以及bind方法。以下详细解释了apply、call以及bind的用法,并通过实例加深理解。 1. apply()和call()方法 apply()和call()方法都用于指定函数体内this的值。...
JavaScript 中的 `call()` 和 `apply()` 方法是两种非常重要的函数调用方式,它们在继承和对象间共享行为时发挥着关键作用。本文将详细解析这两种方法的定义、用途以及如何在实际场景中应用。 1. `call()` 方法 `...
JQuery源码分析与JavaScript中的apply与call方法是JavaScript编程中非常重要的概念,这两者都是函数对象的方法,用于在特定的作用域中执行函数,并可以指定函数体内this的指向。从JQuery源码中分析apply和call方法,...
主要介绍了JavaScript中函数(Function)的apply与call理解,本文讲解了JavaScript函数调用分为4中模式以及通过apply和call实现扩展和继承两方面,需要的朋友可以参考下
JavaScript 中的 `apply`、`call` 和 `bind` 都是用来操控函数调用时 `this` 指向的三个关键方法。它们允许开发者在不同的上下文中执行函数,这对于面向对象编程和函数式编程非常重要。下面我们将深入解析这三个方法...
javascript callApply代码示例