在javascript做deep copy?
動機 當你以為deep copy是正常的builtin時,Javascript總是能給你驚喜 ...
動機 當你以為deep copy是正常的builtin時,Javascript總是能給你驚喜 ...
動機 manga loader是神器,來試著加加新的網站 ...
動機 之前在看js的proto時,突然想起之前看的metaclass ...
動機 想到就來寫一寫 promise is monad promise是從callback hell來的,而每個callback都有接callback的變數,所以可以用之前寫過的方式來把它簡化 最後拿到的就是promise await is bind & async is return 在monad中 return 是 讓一個值變成monad 而 bind 是從monad中取值,再包成monad 對應到 Promise就是 then(() => {}): bind Promise.resolve(val): return 但是寫Promise.resolve(val)配function有點長,所以有了async 寫then((x) => { return x})只是為了取個值也很煩,所以有了await 從promise到await 正常的code let a = 1 let b = 2 let c = 3 return a+b+c 包成callback (a) => { return (a,b) => { return (a,b,c) => { return a+b+c }(1,2,3); }(1,2); }(1); // OR (a) => { return (b) => { return (c) => { return a+b+c }(3); }(2); }(1); 用promise來寫,因為then之間的context不能共享,所以會變得很難看...
下面是個人比較喜歡的es6的新特性 終於來了!! Template Literals `Fifteen is ${a + b} and not ${2 * a + b}.` Arrow Functions function Person() { this.age = 0; // var self = this; // 定義該 Arrow Functions 時的環境,是在 Person 物件中 setInterval(() => { // 所以 this 會正確指向 Person 物件 this.age++; //self.age++ }, 1000); } var p = new Person(); class syntax sugar class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise....
hoisting console.log(a) var a = 10 會變成類似(會說是類似,因為底層不一定是這樣做) var a console.log(a) a = 10 可以把他 var a = '1' // A... var b = 2 // B ... var c 想像成這樣 function whatever(a,b,c) { // A ... // B ... }('1',1,undefined); 如果有let var a = '1' function x() { // a ... let a = 2 } 先想像成 function whatever(a) { function x() { // a ... let a = 2 // b ....