js函数的理解

1、创建函数

JavaScript 中需要创建函数的话,有两种方法:函数声明、函数表达式,各自写法如下:

第一种:

			function fn() {};	
第二种:

			var fn = function () {};
此外,可以说还有一种方法,称为“函数构造法”

			var fn = "{name:'color red'}";
			var obj = new Function("return"+fn)();
			alert(obj.name);//color red
此方法以一个字符串作为参数形成函数体,但是用这种方法,执行效率方面会打折扣,似乎无法传递参数,所以少用为妙。

2、函数的调用

js的函数调用会免费奉送两个而外的参数就是 this 和 arguments。arguments是参数组,他并不是一个真实的数组,但是可以使用.length方法获得长度。

js的四种调用方法:

  • 方法调用模式
  • 函数调用模式
  • 构造器调用模式
  • apply调用模式
(1)方法调用模式

				var obj={
					value:0,
					inc:function  () {
						alert(this.value);//this指obj
					}
				}
				obj.inc();
(2)函数调用模式

		var add = function(a, b) {
					alert(this) >//this被绑顶到window
					return a + b;
				}
				var sum = add(3, 4);
				alert(sum);
(3)构造器调用模式

		var quo = function(string) {
					this.status = string;
				}
				quo.prototype.get_status = function() {
					return this.status;
				}
				var qq = new quo("aaa");
				alert(qq.get_status());

(4)apply调用模式

函数的apply方法,如同该对象拥有此方法,使该对象拥有此方法。此时this指向该对象。

apply接收两个参数,第一个是要绑定的对象(this指向的对象),第二个是参数数组。

		function MyObject(name) {
					this.name = name || 'MyObject';
					this.value = 0;
					this.increment = function(num) {
						this.value += typeof(num) === 'number' ? num : 0;
					};
					this.toString = function() {
						return '[Object:' + this.name + ' {value:' + this.value + '}]';
					}
					this.target = this;
				}

				function getInfo() {
					return this.toString();
				}
				var myObj = new MyObject();
				alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}],this指向myObj 
				alert(getInfo.apply(window)); //[object Window],this指向window 

3、函数的参数

参数用于将数据传递到函数内部。当然,如果不用参数传递,在函数内部也可以访问外部的变量,那为什么还要参数呢?

1.封装:有了参数,函数内部就不用关心外部的东西,只负责自己处理自己的东西即可。
2.如果你使用参数,那么你在函数内部修改了参数的值,外部的值就不会受到影响,如果你直接操作函数外部的值,那可就危险了。(当然,不是所有参数的修改都不会被影响,如果是引用传递,那么外部的值会同时改变)。

			function fn1() {
					alert("hello");
				}
			function fn2(str) {
					str=2;
					return str;
				}
				alert(fn2());
第一个为无参函数,第二个为有参函数。并且有参函数里面有返回值return str,外部调用函数的时候才能拿到里面参数的值。






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值