1、閉包
⑴
function lazy_sum(arr){
var sum=function (){
return arr.reduce(function(x,y){
return x + y;
});
}
return sum;
}
var arr=[1,2,3,4,5];
console.log(lazy_sum(arr)());```
⑵計數器
function create_counter(initial){
var x=initial || 0;
return {
inc:function(){
x += 1;
return x;
}
}
}
var c1=create_counter();
console.log(c1.inc());
console.log(c1.inc());
console.log(c1.inc());
var c2=create_counter(100);
console.log(c2.inc());
console.log(c2.inc());
console.log(c2.inc());```
⑶x的n次方
function make_pow(n){
return function(x){
return Math.pow(x,n);
}
}
var pow2=make_pow(2);
var pow3=make_pow(3);
console.log(pow2(5));//25
console.log(pow3(7));//343```
2、[JSON](http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499490767fe5a0e31e17e44b69dcd1196f7ec6fc6000)
⑴對象序列化成JSON格式的字符串 - JSON.stringify()
①要輸出得好看一些,可以加上參數,按縮進輸出:
`JSON.stringify(xiaoming, null, ' ');`
第二個參數用于控制如何篩選對象的鍵值,如果我們只想輸出指定的屬性,可以傳入Array:
②還可以傳入一個函數,這樣對象的每個鍵值對都會被函數先處理
③如果我們還想要精確控制如何序列化小明,可以給xiaoming定義一個toJSON()的方法,直接返回JSON應該序列化的數據
⑵拿到一個JSON格式的字符串,我們直接用JSON.parse()把它變成一個JavaScript對象:
JSON.parse()還可以接收一個函數,用來轉換解析出的屬性
3、插入DOM
對于一個已有的HTML結構:
Scheme
JavaScript
Python
Ruby
Haskell
<ol id="test-list">
<li class="lang">Scheme</li>
<li class="lang">JavaScript</li>
<li class="lang">Python</li>
<li class="lang">Ruby</li>
<li class="lang">Haskell</li>
</ol>```
按字符串順序重新排序DOM節點:
var list = document.getElementById('test-list');
var arr = Array.from(list.children);
arr.sort((x,y) => {return x.innerText>y.innerText?true:false;});
arr.forEach(function(x){
list.appendChild(x);
});```
4、刪除DOM
練習
JavaScript
HTML
CSS
<ul id="test-list">
<li>JavaScript</li>
<li>Swift</li>
<li>HTML</li>
<li>ANSI C</li>
<li>CSS</li>
<li>DirectX</li>
</ul>```
把與Web開發技術不相關的節點刪掉:
var list = document.getElementById('test-list');
for(var x = 1; x < list.children.length; x++){
list.removeChild(list.children[x]);
}```