牛客網刷題筆記
阿新 • • 發佈:2018-12-22
1.fn.call 以及fn.apply作用:
call, apply主要作用是改變函式賴以執行的作用域, 簡言之就是改變函式中this的指向.
用法:
fn.call(obj, args1, args2, ...); //obj是指定函式賴以執行的物件, arg1等是傳給函式的引數(假如有的話)
fn.apply(obj, [args1, args2, ...]); //obj是指定函式賴以執行的物件, [arg1, ...]等是傳給函式的引數陣列(假如有的話)
差別:
call和apply的差別就是引數的不同.
call中的引數必須是一個個列舉出來的.
apply中的引數必須是陣列
2.還有幾道題是關於正則表示式的,正則表示式有一些記不清楚了
下面列出用法連結
題目示例
給定字串 str,檢查其是否以母音字母結尾
1、母音字母包括 a,e,i,o,u,以及對應的大寫
2、包含返回 true,否則返回 false
function endsWithVowel(str) {
return /[aeiou]$/i.test(str);
}
//首先確定母音集合[a,e,i,o,u],然後是以母音結尾,加上$,最後通配大小寫,加上i。
//因此正則表示式為:/[a,e,i,o,u]$/i,最後用test方法去檢測字串str
3.curry化
//柯里化是把接受多個引數的函式變換成接受一個單一引數(最初函式的第一個引數)的函式, //並且返回接受餘下的引數且返回結果的新函式的技術。 //簡單理解題目意思,就是指,我們將預定義的函式的引數逐一傳入到curryIt中,當引數全部傳入之後,就執行預定義函式。 //於是,我們首先要獲得預定義函式的引數個數fn.length,然後宣告一個空陣列去存放這些引數。 //返回一個匿名函式接收引數並執行,當引數個數小於fn.length,則再次返回該匿名函式,繼續接收引數並執行, //直至引數個數等於fn.length。 //最後,呼叫apply執行預定義函式。 function curryIt(fn) { //獲取fn引數的數量 var n = fn.length; //宣告一個數組args var args = []; //返回一個匿名函式 return function(arg){ //將curryIt後面括號中的引數放入陣列 args.push(arg); //如果args中的引數個數小於fn函式的引數個數, //則執行arguments.callee(其作用是引用當前正在執行的函式,這裡是返回的當前匿名函式)。 //否則,返回fn的呼叫結果 if(args.length < n){ return arguments.callee; }else return fn.apply(this,args); } }