- 浏览: 71191 次
- 性别:
- 来自: 长春
文章分类
最新评论
-
lizhiping116:
求判断字符串中是否有空格
正则验证 -
liuzhongzhou2721:
:
正则验证 -
liuzhongzhou2721:
正则验证 -
liuzhongzhou2721:
[img][/img]
正则验证 -
liuzhongzhou2721:
来看看了,好东西呀
正则验证
一、call 方法
调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容)。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
二、apply方法
apply方法的第一个参数也是要传入给当前对象的对象,即函数内部的this。后面的参数都是传递给当前对象的参数。
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)
对应的apply写法为:func.apply(func1,[var1,var2,var3])
同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。
三、caller 属性
返回一个对函数的引用,即调用了当前函数的函数体。
functionName.caller :functionName 对象是所执行函数的名称。
说明:
对于函数来说,caller 属性只有在函数执行时才有定义。 如果函数是由 JScript 程序的顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
四、callee属性
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
[function.]arguments.callee:可选项 function 参数是当前正在执行的 Function 对象的名称。
说明:
callee 属性的初始值就是正被执行的 Function 对象。
callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿
函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此可以判断调用时形参长度是否和实参长度一致。
调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容)。
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
function Person(name){ this.name = name; } function Teacher(name){ Person.call(this, "老师:"+name); } Teacher.prototype.getName = function(){ return this.name; } function Student(name){ Person.call(this, "学生:"+name); } Student.prototype.getName = function(){ return this.name; } alert(new Teacher("小李").getName()); alert(new Student("小王").getName()); var first_object = { num: 42 }; var second_object = { num: 24 }; function multiply(mult) { return this.num * mult; } alert(multiply.call(first_object, 5)); // returns 42 * 5 alert(multiply.call(second_object, 5)); // returns 24 * 5
<input type="text" id="myText" value="input text"> <script> function Obj(){this.value="对象!";} var value="global 变量"; function Fun1(){alert(this.value);} window.Fun1(); //global 变量 Fun1.call(window); //global 变量 Fun1.call(document.getElementById('myText')); //input text Fun1.call(new Obj()); //对象! </script>
二、apply方法
apply方法的第一个参数也是要传入给当前对象的对象,即函数内部的this。后面的参数都是传递给当前对象的参数。
对于apply和call两者在作用上是相同的,但两者在参数上有区别的。
对于第一个参数意义都一样,但对第二个参数:apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。
如 func.call(func1,var1,var2,var3)
对应的apply写法为:func.apply(func1,[var1,var2,var3])
同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入。
var func=new function(){this.a="func"} var myfunc=function(x,y){ var a="myfunc"; alert(this.a); alert(x + y); } myfunc.call(func,"var"," fun");// "func" "var fun" myfunc.apply(func,["var"," fun"]);// "func" "var fun"
三、caller 属性
返回一个对函数的引用,即调用了当前函数的函数体。
functionName.caller :functionName 对象是所执行函数的名称。
说明:
对于函数来说,caller 属性只有在函数执行时才有定义。 如果函数是由 JScript 程序的顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
function CallLevel(){ if (CallLevel.caller == null) alert("CallLevel was called from the top level."); else alert("CallLevel was called by another function:\n"+CallLevel.caller); } function funCaller(){ CallLevel(); } CallLevel(); funCaller()
四、callee属性
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
[function.]arguments.callee:可选项 function 参数是当前正在执行的 Function 对象的名称。
说明:
callee 属性的初始值就是正被执行的 Function 对象。
callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿
函数的递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。而该属性
仅当相关函数正在执行时才可用。还有需要注意的是callee拥有length属性,这个属性有时
用于验证还是比较好的。arguments.length是实参长度,arguments.callee.length是
形参长度,由此可以判断调用时形参长度是否和实参长度一致。
//callee可以打印其本身 function calleeDemo() { alert(arguments.callee); } //用于验证参数 function calleeLengthDemo(arg1, arg2) { if (arguments.length==arguments.callee.length) { window.alert("验证形参和实参长度正确!"); return; } else { alert("实参长度:" +arguments.length); alert("形参长度: " +arguments.callee.length); } } //递归计算 var sum = function(n){ if (n <= 0) return 1; else return n +arguments.callee(n - 1) }
发表评论
-
AMD研究,组件的动态加载。
2013-11-23 14:41 666研究了一下dojo的ADM。明白组件的加载机制了。 (fu ... -
代码分行
2011-08-27 22:57 772<!DOCTYPE html"> ... -
Date
2011-08-26 19:49 882//全局函数 Date //Date 类的 ... -
百度地图
2011-07-12 15:38 1336<html> < ... -
TEST_INEDITOR
2011-06-29 06:47 659<!DOCTYPE html PUBLIC " ... -
浏览器判断
2011-06-25 14:55 980B = (function(ua){ var b = ... -
循环添加事件
2011-06-24 14:05 882var nodes = this.tree.rootNod ... -
上下选择
2011-06-18 22:07 827<!DOCTYPE html PUBLIC &quo ... -
简易向上的滚动
2011-06-18 17:55 721<!DOCTYPE html PUBLIC &quo ... -
JS中获取各种窗口大小
2011-05-29 17:11 684网页可见区域宽:document.body.clientWid ... -
两点间直线
2011-05-29 17:10 673function getLineDot(a, b){ ... -
Dojo类似Jquery操作DOM的方法
2011-05-19 10:18 1767导入NodeList-traverse包 dojo.req ... -
多对象inherit
2011-05-14 10:04 762var Tool = {}; Tool._mixin = ... -
字符串连接和StringBuffer的对比
2010-08-10 06:31 874function StringBuffer () { ... -
获得Event对象
2010-07-08 11:31 1046function getEvent(){ //同时 ... -
根据类名获得元素
2010-06-30 18:22 990/** * 根据类名获得元素 * 参数说明: ... -
UUID生成器_Javascript版
2010-06-26 11:31 2416/* uuid.js - Version 0.3 ... -
类百度的小贴士
2010-06-26 10:22 718这是好久以前写的,当时正在学习Javascript。看见百度空 ... -
JavaScript时间
2010-06-23 15:19 696<!DOCTYPE html PUBLIC &quo ... -
禁止IE下右键等功能
2010-06-23 15:05 858window.setInterval(function() ...
相关推荐
### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象:JavaScript函数调用的参数管理器 在JavaScript中,每个函数都有一个隐含参数`arguments`,它允许开发者访问传递给函数的所有参数...
这篇文章将深入探讨四个关键概念:caller、callee、call和apply,它们都是JavaScript函数操作的核心部分,对于理解和使用高级JavaScript编程至关重要。 首先,我们来了解`caller`和`callee`。在JavaScript的函数...
在JavaScript编程中,apply、call、caller、callee和bind是与函数相关的几个重要概念,它们都与函数的this上下文相关,以及如何控制函数的调用方式。接下来,我们将详细分析这些方法的使用方法和区别。 ### call...
在JavaScript的世界里,caller、callee、call和apply是四个非常重要的概念,它们涉及到函数的调用方式和执行上下文。这些知识点对于深入理解和优化代码至关重要,尤其在处理高阶函数和面向对象编程时。 首先,让...
主要介绍了javascript中call,apply,callee,caller用法,结合实例形式分析了javascript中call,apply,callee,caller功能、使用方法及相关操作注意事项,需要的朋友可以参考下
### 理解JavaScript中的`caller`, `callee`, `call`, `apply` #### Arguments对象 在深入了解`caller`, `callee`, `call`, 和 `apply` 之前,我们先来看看`arguments`对象。`arguments`对象是在JavaScript函数内部...
4. **call/apply/bind方法**:这三个方法可以改变`this`的指向,使其指向指定的对象。 5. **箭头函数**:箭头函数没有自己的`this`,它会捕获其所在(词法)上下文的`this`值。 **原型继承(Prototype Inheritance...
Javascript – 全面理解 caller,callee,call,apply Author: BlueDestiny, never-online From: http://www.never-online.net, Blog.csdn.net/BlueDestiny 1、caller JScript参考中说明为:返回一个对函数的...
JavaScript中arguments、caller、callee、call和apply是与函数相关的几个重要概念和对象。它们为JavaScript的函数提供了非常灵活的功能,特别是在处理函数参数和调用上下文方面。接下来,将对这些概念逐一进行详细...
### 理解JavaScript中的`caller`, `callee`, `call`, `apply`的区别 #### 一、`arguments`对象 在深入探讨`caller`, `callee`, `call`, 和`apply`之前,我们先来了解一个重要的概念——`arguments`对象。 **`...
JavaScript不支持传统意义上的多重继承,但我们可以使用call()或apply()方法模拟多重继承的效果。假设我们有两个父类Class10和Class11,我们想在Class2中使用它们的方法: ```javascript function Class10() { ...
4. **ES6的箭头函数**:箭头函数没有自己的`this`、`arguments`、`.call`、`.apply`和`.constructor`等方法,因此它们无法使用`arguments.callee`。在ES6中,通常建议使用`let`或`const`来声明一个内部函数,然后...
正则表达式 call(),apply(),callee,caller,cookie方法,setInterval(),clearInterval(),setTimeout() ,clearTimeout()
另外,`apply`和`call`这两个函数方法也是JavaScript中的重要特性,它们允许你改变函数执行时的`this`上下文,并且可以动态传递参数。`apply`接收两个参数,第一个是`this`值,第二个是一个参数数组。而`call`则直接...
3.3.1、call 3.3.2、apply 3.3.3、caller 3.3.4、Callee 3.5、立即执行函数表达式 (IIFE) 3.5.1、匿名函数与匿名对象 3.5.2、函数与函数表达式 3.5.3、立即执行函数表达式与匿名对象 3.5.4、各种IIFE的写法 3.5.5、...
apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 Array 对象 提供对创建任何数据类型的数组的支持。 asin 方法 返回一个数的反正弦...