锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 网站前端开发开源技术 / JavaScript函数
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

JavaScript函数

函数在JavaScript里是一个很重要的部分,JavaScript有很多内置函数,程序员可以直接使用这些内置函数,也可以自定义函数以供程序使用。

在JavaScript中,函数是Function类的具体实例。而且都与其它引用类型一样具有属性和方法。函数名实际上是指向函数对象的指针,函数可以作为参数参与到传参和返回值中。

一、函数定义

//函数声明式定义 function foo(num1,num2){ return num1 + num2; } //函数表达式定义 var foo = function(num1,num2){ return num1 + num2; }; //使用Function构造函数定义 var foo = new Function("num1","num2","return num1 + num2"); //实际上创建一个Function实例并不一定要赋值给具体的指针,可以直接执行 (function(x,y){return x+y})(1,2); //之所以用圆括号把function(){}括起来是因为js解释器会将function解释为函数声明,而函数声明不能直接跟着(x,y),我们需要将其转换为函数表达式。 //(1,2)表示要传递跟函数的参数。 //上面的例子也可以写成: function foo(x,y){ return x+y; }(1,2); //函数声明的方式无法定义匿名函数,因此如果想使用匿名函数,则必须用函数表达式的定义方式。

二、函数属性

1.函数参数arguments(内部属性)

与其他语言不同,ECMAScript函数不介意传递进来多少个参数,也不在乎是什么类型。因为实参在内部是用一个类数组来表示的,函数接收到的始终是个类数组。可以看出,ECMAScript函数的一个重要特点:命名参数(形参)只提供便利,但不是必须的。

注意:js中方法本身是没有重载的,因为:
1.方法的本质就是一个Function类型的变量,如果出现同名的变量,会覆盖!
2.但是依靠函数内部属性argument来模拟重载!

//模拟函数重载! function testArgument() { if (arguments.length == 1) { alert("哈哈~1"+arguments[0]); } else if (arguments.length == 2) { alert("哈哈~2" + arguments[0] + "," + arguments[1]); } else { alert("哈哈~3"); } } testArgument(); testArgument(1); testArgument(1, 2);

2..函数内部属性this

this引用的是函数据以执行操作的对象,也就是函数在执行时所处的作用域通俗:就是哪个对象.出了这个函数,那么函数里的this就代表哪个对象

例子:
   window.color = "blue";
var o = { color: "red" };
function sayColor() {
alert(this.color);//谁.出这个方法,这个this就是谁
}
sayColor();//blue,因为引用函数的是window对象,作用域中的this都是指window.
o.sayColor = sayColor;
o.sayColor();//red,

三、函数的调用

1.方法调用模式:

先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject 对象。

  var blogInfo={
blogId:123,
blogName:"werwr",
showBlog:function(){alert(this.blogId);}
};
blogInfo.showBlog();

2.函数调用模式

定义一个函数,设置一个变量名保存函数,这时this指向到window对象。

 var myfunc = function(a,b){
return a+b; } alert(myfunc(3,4));

3.构造器调用模式

定义一个函数对象,在对象中定义属性,在其原型对象中定义方法。在使用prototype的方法时,必须实例化该对象才能调用其方法。

 var myfunc = function(a){
this.a = a;
};
myfunc.prototype = {
show:function(){alert(this.a);}
} var newfunc = new myfunc("123123123");
newfunc.show();

4.apply,call调用模式

  var myobject={};
var sum = function(a,b){
return a+b;
};
var sum2 = sum.call(myobject,10,30); //var sum2 = sum.apply(myobject,[10,30]);
alert(sum2);
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内