JavaScript基础知识

1、关于函数部分有用拓展

引用类型>Function类型>作为值的函数

小例子之使数组按指定属性排序

//声明函数
function createComparisonFunction(propertyName){
    return function(object1,object2){
        var value1 = object1[propertyName];
        var value2 = object2[propertyName];
        if(value1<value2){
            return -1;
        }else if(value1>value2){
        	return 1;
        } else {
            return 0;
        }
    };
}
var data = [{name:"Zachary",age:28},{name:"Nicholas",age:29}];
//按姓名排序
data.sort(createComparisonFunction("name"));
//data的值
0: {name: "Zachary", age: 28}
1: {name: "Nicholas", age: 29}

通过callee属性,升级递归算法
callee属性:是一个指针,指向拥有这个arguments对象的函数。

function factorial(num){
	if (num <=1){
		return 1;
	}else{
		return num * factorial(num-1);
	}
}

消除函数的执行与函数名factory的耦合

function factorial(num){
	if(num<=-1){
		return 1;
	} else {
		return num * arguments.calle(num-1)
	}
}

重写了factory函数,无论引用函数时用的是什么名字,都可以保证正常的完成递归。

var tureFactorial = factorail;
factorial = function (){
	return 0;
}
alert(trueFactorial(5));   //120
alert(factorial(5));       //0  

扩充函数的作用域

window.color = "red";
var o = {color:"blue"};

function sayColor(){
	alert(this.color);
}

sayColor();            //red
sayColor.call(this);   //red
sayColor.call(window); //red
sayColor.call(o);      //blue
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值