概括:
JavaScript中的函数的概念,非常的重要,函数也是对象,每个函数对象都有一个隐藏属性---调用属性,当函数被调用时执行调用属性中的代码。
this和arguments
当一个函数被调用时,根据不同的上下文环境,this被赋予不同的对象的引用,而arguments就是传入函数的参数数组。
1、函数在对象内部,叫方法。
var num1={value:0,add:function(){this.value++;}};
//这里的this当然就单表num1的引用
num1.add();
document.write(num1.value+"<br>");
function Sub(){this.value--;}
//这也是一个方法,如果绑定的对象没有value属性,则会引发错误
num1.sub=Sub;
num1.sub();
document.write(num1.value+"<br>");
value=100;
Sub();
document.write(value);
//当然也可以绑定到全局对象
2、全局函数
function mul(x,y)
{
document.write(x*y+"<br>");
}
mul(10,10);//传统意义的函数
3、构造函数
function rec(length,width)
{
this.length=length;
this.width=width;
}
var rec1=new rec(100,50);
//可以这么理解,new产生一个object,并且函数中的this绑定到了这个object,所后则可以添加属性等操作。
4、call和apply
function rec(length,width)
{
this.length=length;
this.width=width;
}
var rec1=new rec(100,50);
function circle(x,y,radius)
{
this.x=x;
this.y=y;
this.radius=radius;
}
var circle1=new circle(10,10,40);
function addnum(addvalue)
{
for (var i in this)
{
this[i]+=addvalue;
}
}
document.write("add before=======<br>");
document.write("rec1=======<br>");
for (var i in rec1)
{
document.write("value of "+i+" is: "+rec1[i]+"<br>");
}
addnum.call(rec1,1);//获得rec1的引用到this
document.write("add after=======<br>");
document.write("rec1=======<br>");
for (var i in rec1)
{
document.write("value of "+i+" is: "+rec1[i]+"<br>");
}
document.write("add before=======<br>");
document.write("circle1=======<br>");
for (var i in circle1)
{
document.write("value of "+i+" is: "+circle1[i]+"<br>");
}
addnum.call(circle1,2);//获得circle的引用到this
document.write("add before=======<br>");
document.write("circle1=======<br>");
for (var i in circle1)
{
document.write("value of "+i+" is: "+circle1[i]+"<br>");
}
apply和call类似,只是后面的参数要用数组传递而已。
可见理解JS的函数最重要的就是要理解this在上下文中的含义。
分享到:
相关推荐
在JavaScript(简称JS)中,函数是至关重要的概念,它们是可重用代码的封装单元,允许我们将一段逻辑封装起来,以便在需要时反复调用,而无需每次都编写相同的代码。函数不仅帮助我们提高代码的复用性,还使得代码...
javascript,js中函数的定义及使用
这在递归函数中特别有用,可以提高性能。 八、函数式库 JavaScript有许多函数式编程库,如Ramda和Lodash的FP模式,它们提供了丰富的函数式工具,简化了编写函数式代码的过程。 九、惰性求值 虽然JavaScript本身不...
**关于JavaScript函数的可变参数** JavaScript支持可变参数,即使函数声明中指定了参数,也可以传入任意数量的参数。未声明的参数会自动收集到一个名为`arguments`的对象中,它是一个类数组对象,包含了所有传入...
以上就是JavaScript函数的基础知识,包括定义、调用、返回值、匿名函数、箭头函数、作为值的函数、作用域、闭包以及默认参数。通过这些基础知识,你可以构建复杂的程序逻辑,并实现代码的复用。在实际编程中,深入...
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
在JavaScript编程中,有时会遇到需要根据函数名的字符串形式来动态执行对应函数的场景。这类技术能够提供一种灵活的方式来执行代码,尤其在进行插件化开发、事件驱动编程或实现钩子函数时非常有用。为了实现这一功能...
在JavaScript这种动态类型的脚本语言中,函数是第一类对象,这意味着函数可以作为变量赋值、作为参数传递以及作为其他函数的返回值。这为函数劫持提供了可能。 函数劫持的基本思想是替换一个已存在的函数,通常是...
JavaScript中的函数是第一类对象,这意味着它们可以像其他值一样被赋给变量、作为参数传递、从函数中返回或存储在数据结构中。 书中提到的“一等公民的函数”,指的是函数在JavaScript中所享有的特殊地位。开发者...
而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...
函数饲养:函数饲养(Function Breeding)是创建新函数的方法,通常用于高阶函数中。 Pointfree编程:Pointfree风格是指在编程中,不显式地提到数据,而是编写无参的函数组合。这种风格可以减少代码中的变量和临时...
这些函数可以被传递给其他函数,例如在高阶函数中,也可以作为其他函数的结果返回。这种能力使得JavaScript具备了函数式编程的基本特征。 其次,JavaScript支持词法作用域和闭包,这是函数式编程中重要的概念。闭包...
不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...
js验证函数包js验证函数包js验证函数包js验证函数包js验证函数包
Java可以设置一个端点,接收来自JavaScript的Ajax请求,然后在响应中包含调用JS函数的命令。 3. **HTML5的Web Workers**:Web Workers允许可后台运行的脚本,从而避免阻塞用户界面。Java可以通过HTTP请求触发Web ...
JavaScript绘图函数库是开发网页动态图形的一种强大工具,它为开发者提供了丰富的API,使得在浏览器环境中绘制复杂的图形变得简单易行。在这个标题为“javascript绘图函数库”的资源中,我们主要关注的是如何利用...
JavaScript是Web开发中不可或缺的一部分,尤其在...这些代码示例覆盖了JavaScript函数的核心概念,通过实践这些代码,开发者可以更好地理解JavaScript中函数的使用、作用域规则、新的语法特性以及面向对象编程的基础。
使用`return`语句可以在函数中返回一个值。返回值可以是任何类型,包括数组和对象。例如: ```javascript function sum(num1, num2) { return num1 + num2; } var he = sum(10, 20); console.log(he); ``` ...
<script src=hook.js> var myHook = new Hooks(); myHook.initEnv(); //普通全局函数 var _alert = null; function myalert(param){console.log("before hook");} alert.hook("_alert",myalert); alert.unhook("_...