欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript函數(shù)中關(guān)于valueOf和toString的理解

 更新時(shí)間:2016年06月14日 15:27:10   作者:jian,zhou  
本文給大家介紹JavaScript函數(shù)中關(guān)于valueOf和toString的理解,簡(jiǎn)單的說(shuō)就是需要轉(zhuǎn)換為字符串時(shí),會(huì)調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時(shí)需要調(diào)用valueOf。對(duì)js valueof tostring知識(shí)感興趣的朋友一起學(xué)習(xí)吧

今天看到一個(gè)試題,實(shí)現(xiàn)如下語(yǔ)法的功能:

var a = add(2)(3)(4); //9 

這個(gè)就是一個(gè)高階函數(shù)的應(yīng)用,分析:add(2)會(huì)返回一個(gè)函數(shù),add(2)(3)也會(huì)返回一個(gè)函數(shù),最后add(2)(3)(4)返回一個(gè)數(shù)值。

實(shí)現(xiàn):

function add(num1){
return function(num2){
return function(num3){
return num1+num2+num3;
}
}
}
add(2)(3)(4);//9 

這個(gè)沒(méi)有錯(cuò)的,可以完美解決問(wèn)題。

優(yōu)化:這里只討論關(guān)于高階函數(shù)的部分,對(duì)于更好的解決方案,可以實(shí)現(xiàn)無(wú)限這種調(diào)用,

//方法一
function add(a) {
var temp = function(b) {
return add(a + b);
}
temp.valueOf = temp.toString = function() {
return a;
};
return temp;
}
add(2)(3)(4)(5);//14
//方法二、另看到一種很飄逸的寫法(來(lái)自Gaubee):
function add(num){
num += ~~add;
add.num = num;
return add;
}
add.valueOf = add.toString = function(){return add.num};
var a= add(3)(4)(5)(6); // 18
//方法二注釋:其實(shí)就相當(dāng)于,只不過(guò)對(duì)函數(shù)應(yīng)用了自定義屬性,用于存儲(chǔ)值。
;(function(){
var sum=0;
function add(num){
sum+=num;
return add;
}
add.valueOf=add.toString=function(){return sum;}
window.add=add;
})()
var a= add(3)(4)(5)(6); // 18[/code]

這是我在[url=http://www.cnblogs.com/wengxuesong/p/5577683.html]博客園[/url]看到的文章中寫的,對(duì)于其中的方法一和方法二 一直不理解,也嘗試在控制臺(tái)輸出 [code=javascript,javascript 代碼,true]function 9

var temp = function() {
}
temp.valueOf = function() {
return 2;
}
temp.toString = function() {
return 'hahh';
}
alert(temp);
console.log(2 * temp); 

需要轉(zhuǎn)換為字符串時(shí),會(huì)調(diào)用toString,需要轉(zhuǎn)換為數(shù)字時(shí)需要調(diào)用valueOf。

相關(guān)文章

最新評(píng)論