標籤:過濾 com protocol rom blog 接受 附加 區分 inf
1、filter也是一個常用的操作函數,他作用於Array的某些元素,然後返回剩下的元素,和map()類似,Array的filter()也接受一個函數,和map()不同的是,filter()把傳入的函數作用於每一個元素,然後根據反悔的是true 還是false決定保留還是丟棄該元素。
filter()接受的回掉函數,其實可以有多個參數,通常我們僅適用第一個參數,表示Array的某個元素,回掉函數還可以接受另外兩個參數,鳥事元素的位置和數組本身。
2、Array的sort()方法預設吧把所有元素轉換成String再排序,
3、箭頭函數相當於匿名函數,箭頭函數有兩種格式,
4、Regex 、\d匹配一個數字, \w匹配一個字母或者一個數字
‘00\d’-----》007 ‘\w\w’------>js
. 匹配任一字元
‘js.’------>jsp jss js!
要是匹配變長得字元,使用*號,表示任意個字元(包括0),用+表示至少一個字元, 用?表示0個或者1個,用{n}表示n個字元,用你{n,m} 表示n到m個字元
\s表示匹配一個空格
[0-9a-zA-Z\_]可匹配一個數字或者字母或者底線
^表示行的開頭,^\d表示必須以數字開頭。
$表示行的結束,\d$表示必須以數字結束
3、可以使用location.herf擷取URL各個部分的值
location.protocol; location.host location.port location.pathname location.search location.hash
Cookie是由伺服器發送的key_value標識符,因為HTTP協議是無狀態的,但是伺服器要區分到底是哪個使用者發來的請求,就可以使用Cookie來區分,當一個使用者登陸伺服器成功之後伺服器就會發送您一個Cookie給瀏覽器,列如 user=nsdnf9030-23r0.....伺候瀏覽器訪問該網站時, 會在要求標頭上附加上這個Cookie伺服器根據Cookie區分出使用者。
除此之外,Cookie還可以儲存網站的一些設定,document.Cookie
4、history對象儲存了瀏覽器的記錄,JavaScript可調用history的back()或者forward(),這個對象屬於曆史遺留對象,對於web頁面來說,使用大量的ajax互動頁面,
5、操作DOM節點,通過各種方式拿到DOM節點,常見的方法document.getElementById()和document.getElementByTagName(),以及CSS選取器document.getElementByClassName();
6、當我們獲DOM之後,如果DOM是空的就可以 直接使用innerHtml=‘<span>child</span>‘就可以修改DOM的節點內容,相當於插入新的DOM節點,但是如果DOM節點不是空的,就不能使用這種方法,因為innerHtml 會直接替換掉原來的節點,
使用 appendChild把一個節點添加到父節點的而最後一個子節點。
7、JavaScript處理表單
<form id="test-form‘‘>
<input type=“text” name=‘test‘><button type="button" onclick="doSUbmitForm()">Submit</button>
</form> <script>
fuction doSubmitFrom(){
var form=documnet.getElementById(‘test-form‘);
form.submit();
}</script>
1、過濾掉繼承的屬性
要過濾掉對象繼承的屬性,用hasOwnProperty()來實現:
var o = { name: ‘Jack‘, age: 20, city: ‘Beijing‘};for (var key in o) { if (o.hasOwnProperty(key)) { console.log(key); // ‘name‘, ‘age‘, ‘city‘ }}
2、由於Array也是對象,而他的每一個元素的索引被視為對象的屬性,因此,for ...in 迴圈可以直接迴圈出Array的索引,但是注意的是迴圈結果是S同日南方類型。
var a=[‘A‘,‘B‘,‘C‘];for (var i in a){ consloe.log(i); console.log(a[i]);}3、Map是一個索引值對的類似於Array
由於一個Key只能對應一個value,所以,多次對一個key放入Value,就面的會把前面的值衝掉。
4、set和map類似,也是一組key集合,但是不儲存value由於key不能重複,在set中沒有重複的key,要建立一個set,需要提供一個Array作為輸入,或者直接建立以一個空的set
var s1=new Set();
var s2=new Set([1,2,3]); 重複元素會在set中自動過濾,
用for ....of 迴圈遍曆集合,但是最好的韓式使用Iterable函數中的forEach方法,它只接受一個函數,每次迭代自動調回該函數,
Iterable
由於JavaScript允許傳入任意個參數,不影響調用,因此傳入的參數比定義的參數多也沒問題,即使函數內部不需要這些慘呼。
abs(10,‘blablabla‘);//返回10 abs(-9,‘hahaha‘,‘mjsds‘)、、返回9
利用arguments可以獲得調用者傳入的所有參數,也就是說,即使函數不定義任何參數,還是就可以拿到參數的值
為了擷取除了已經定義的參數a,b 之外的參數,就得使用arguments,並且迴圈要剔除之前的參數,使用rest參數可以很好的解決
function foo(a,b,.....rest){
console.log(‘a‘+a);
consloe.log(‘b‘+b);
consloe.log(rest);} foo(1,2,3,4,4),但是 rest參數只能寫在最後
前面用用.....標識,傳入的參數先綁定a,b,多以的參數,以數組的方式交給變數rest 所以不再使用arguments,就可以直接擷取全部的參數
由於JavaScript函數可以嵌套,此時,內建函式可以訪問外部函數定義的bianl,反過來不行
不行語句 var x=‘Hello‘+y;沒報錯原因是變數y之後申明啦,但是console.log()顯示 Hello, undefined 地火明變零y的值為undefined,這是因為JavaScript引擎自動提升了變數y的聲明,但是不會提升y的賦值
所以一般開始對對象的參數進行聲明,使用var
function foo(){
var
x=2;
y=x+1;
z;i;
for(i=0;i<100;i++){
。。。。。。。}}
5、就AV是預設有一個全域變數window,全域範圍的變數實際上會綁定到widow的一個屬性,如下輸出的結果是一樣的
以變數方式var foo = function () {}定義的函數實際上也是一個全域變數,因此,頂層函數的定義也被視為一個全域變數,並綁定到window對象:
JavaScript實際上只有一個全域變數範圍,任何變數如果在當前函數中沒有找到就會在上一層繼續尋找,最後在全域把變數中也麼有,就會報ReferenceError
6、綁定到對象上的函數叫做方法,和函數沒有區別,但是他在內部使用了一個關鍵字this,this只一個特殊變數,它指向當前對象,如下也就是xiaoming這個變數,所以,this.brith可以取得xiaoming的birth屬性
長度
javaScript筆記整理