概括:
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中的函数对象调用模式是编程中至关重要的概念,它涉及到函数作为一等公民、作用域、闭包、原型链等多个核心知识点。这篇博客通过深入分析JavaScript中的函数调用模式,帮助开发者更好地理解和掌握这些概念...
javascript,js中函数的定义及使用
这在递归函数中特别有用,可以提高性能。 八、函数式库 JavaScript有许多函数式编程库,如Ramda和Lodash的FP模式,它们提供了丰富的函数式工具,简化了编写函数式代码的过程。 九、惰性求值 虽然JavaScript本身不...
在 JS 中,有四种主要的函数调用模式,分别是:普通函数调用、方法调用、构造函数调用和apply/call调用。下面我们将详细探讨这些调用模式。 1. **普通函数调用**: 这是最常见的情况,函数作为一个独立的实体被执行...
以上就是JavaScript函数的基础知识,包括定义、调用、返回值、匿名函数、箭头函数、作为值的函数、作用域、闭包以及默认参数。通过这些基础知识,你可以构建复杂的程序逻辑,并实现代码的复用。在实际编程中,深入...
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
在JavaScript编程中,有时会遇到需要根据函数名的字符串形式来动态执行对应函数的场景。这类技术能够提供一种灵活的方式来执行代码,尤其在进行插件化开发、事件驱动编程或实现钩子函数时非常有用。为了实现这一功能...
不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...
在JavaScript这种动态类型的脚本语言中,函数是第一类对象,这意味着函数可以作为变量赋值、作为参数传递以及作为其他函数的返回值。这为函数劫持提供了可能。 函数劫持的基本思想是替换一个已存在的函数,通常是...
JavaScript中的函数是第一类对象,这意味着它们可以像其他值一样被赋给变量、作为参数传递、从函数中返回或存储在数据结构中。 书中提到的“一等公民的函数”,指的是函数在JavaScript中所享有的特殊地位。开发者...
而《JavaScript函数式.zip》可能是一份关于JavaScript函数式编程的资料集合,函数式编程是一种编程范式,强调使用函数和避免改变状态。其中可能涵盖以下知识点: 1. **纯函数**:理解纯函数的定义,即给定相同的...
这些函数可以被传递给其他函数,例如在高阶函数中,也可以作为其他函数的结果返回。这种能力使得JavaScript具备了函数式编程的基本特征。 其次,JavaScript支持词法作用域和闭包,这是函数式编程中重要的概念。闭包...
JavaScript函数式编程是一种编程范式,它强调将计算视为数据处理的过程,并且重视函数作为第一类公民,即函数可以作为...阅读相关书籍,例如"javascript函数式编程",将帮助你更好地掌握这些概念并应用于实际项目中。
js验证函数包js验证函数包js验证函数包js验证函数包js验证函数包
本文将深入探讨如何在QT应用中与网页内的JavaScript函数进行交互,使得桌面应用能够利用Web技术增强其交互性和动态性。 实现QT和JavaScript的互调,主要依赖于QT的QWebEngine模块,它提供了对Web内容的渲染和交互...
JavaScript绘图函数库是开发网页动态图形的一种强大工具,它为开发者提供了丰富的API,使得在浏览器环境中绘制复杂的图形变得简单易行。在这个标题为“javascript绘图函数库”的资源中,我们主要关注的是如何利用...
●清楚函数在JavaScript中的地位 ●理解真实的函数式类库,并创建一个模拟underscore.js的函数式类库 ●实践纯错误处理技术,例如函子和Monad ●了解ES6的函数式编程特性,例如扩展运算符和Generator
内容概要:本文详细介绍了 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("_...