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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章