1.getter與setter javascript的大部分東西是簡化了的。這裡我們假設有一個student對象,並且我們用student.age來訪問它的age屬性,如果此時定義了age屬性,我們就會得到它 的值,如果沒有,我們就會得到undefined。 但是我們也可以編寫自定義的getter和 ...
1.getter與setter
javascript的大部分東西是簡化了的。這裡我們假設有一個student對象,並且我們用student.age來訪問它的age屬性,如果此時定義了age屬性,我們就會得到它
的值,如果沒有,我們就會得到undefined。
但是我們也可以編寫自定義的getter和setter函數來獲取我們的想要的東西,而不是直接返回對象的值,設置值的時候也是一樣。
這樣我們就可以實現更多複雜的獲取和設置欄位的功能,如虛擬欄位,欄位驗證,副作用等,ES6中添加了更加方便的語法形式。
- getter簡單說來就是一種獲得屬性值的方法,setter簡單說來就是一種設置屬性值的方法
- getter負責查詢值,它不帶任何參數,setter則負責設置鍵值,值是以參數的形式在內部傳遞。
//isNaN()
函數用來確定一個值是否為NaN
,即判斷該值是否為一個非數字。
const student = { firstName: 'job', lastName: 'jark', get fullName() { return this.firstName + ' ' + this.lastName; }, set age(value) { if (isNaN(value)) throw Error("It has been a bumber"); this_age = Number(value) }, get age() { return this_age } }; console.log(student.firstName); student.firstName = 'jerry'; console.log(student.fullName); student.age = '21'; console.log(student.age); student.age = 'error';
2.運算符
1.逗號運算符
通常逗號運算符用於在一行編寫多個語句,或者在for迴圈中使用,比如
var a,b,n = 6; for(a = 0,b = 0;a <= n&&b<=n;a++,b++) { }
function calculate() { return a++,console.log(a),a; }
我們還可以用它在一行中編寫有逗號分隔的多個表達式,,並返回最後一個表達式的結果。
//通過var定義的變數,作用域是整個封閉函數,是全域的 。通過let定義的變數,作用域是在塊級或是子塊中。
let result = number1,number2,...,numberN;
2.!!運算符
他的效果與使用兩次的js否定運算符的作用是一致的。!!是將任何表達式轉化為布爾類型的表達式的相對較優的運算符。
同樣的,如果表達式的返回值為真值,則返回true,否則則返回false。
!!null //returns false !!undefined //returns false !!false //returns false !!true //returns true !!"" //returns false !!"somestring" //returns true !!0 //returns false !!1 //returns true !![] //returns true !!{} //returns true
3.+運算符
+運算符能夠快速的將字元串轉化為數字,只需要在字元串前面加上+號即可,+運算符還適用於負數,八進位,十六進位和指數,可以將date或者Moment.js對象轉化為時間戳。
//時間戳(timestamp),一個能表示一份數據在某個特定時間之前已經存在的、 完整的、 可驗證的數據,通常是一個字元序列,唯一地標識某一刻的時間。
+ '3.11' //returns 3.11 + '-4' //returns -4 + '0xFF' //returns 255 + true //returns 1 + '123e-5' //returns 0.00123 + false //returns 0 + null //returns 0 + 'Infinity' //returns Infinity +'1,234' //returns Nan +dateObject //returns 1542975502981 +momentObject //returns 1542975502981
4.~運算符
位運算符一般使用的很少,當他與數字一起使用的時候,比如~N => -(N+1),這個式子僅當 N == -1 的時候結果為0。
我們可以在indexof(..)函數前面加一個~來進行布爾檢查,檢查一個項是否存在於Array或者string中。
let userName = 'break jerry' if(~userName.indexOf("break")) { console.log('access denied'); }else { console.log('access granted'); }