Coding / Programming Videos

Post your favorite coding videos and share them with others!

All posts tagged pvt5r486

[JavaScript Weird 支線]Day 68 — 物件導向的基礎範例與 class – pvt5r486 – Medium

Source link ES5 沒有 class 的作法 function dog(name){this.name = name;} dog.prototype.getName = function(){return this.name;} dog.prototype.sayHello = function(){console.log(this.name + ‘ say Hello’);} var d = new dog(‘abc’);var b = new dog(‘qqq’);console.log(d);console.log(d.getName());d.sayHello();console.log(d.sayHello === b.sayHello); // true 可以發現差別並不大,直觀來說下半部的程式碼幾乎是一樣的。 主要就是需要宣告一個函式,而這個函式其實就是 ES6 class 內的 constructor 函式。 而在 ES5 的時候,是看使用時有沒有加入建構子 new 來決定是否為 constructor 函式或是一般的函式。 然後除了要宣告一個函式之外,也必須在該函式的 prototype 定義這些狗會做什麼。 . . . Read more

 

[JavaScript Weird 支線]Day 66 — Closure 可以應用在哪裡? – pvt5r486 – Medium

Source link 好的終於到閉包的最後一個章節了,前面有提到一個小範例是關於金魚腦的小明,那除了這樣的情境可以利用閉包之外,還有一個情境是可以利用閉包達成的,讓我們一起看看。 Photo by Steven Spassov on Unsplash 利用閉包達成私有變數 情境是這樣的,我有 100 元,如果我的錢變多了,就利用某個函式讓錢增加,如果支出超過 10 元,最多就只能付出10元。 讓我們看一段沒有利用閉包的程式碼: var myMoney = 100;function addMoney(addmoney){myMoney = myMoney + addmoney;} function payMoney(paymoney){if (paymoney > 10){myMoney = myMoney – 10;} else {myMoney = myMoney – paymoney;}} addMoney(1);payMoney(11);console.log(myMoney); // 91 好的,這樣我們就完成了這段情境的敘述。 但是有個問題,如果今天與別人協作,別人如果沒有遵照我們訂的函式下去做增減,是可以直接對 myMoney 重新賦值的,那這樣是不是不太 OK 呢? 因此我們要利用閉包將變數私有化,令別人無法在外部直接對變數賦值,只能透過我們提供的方法來變更值。 function . . . Read more

 

[JavaScript Weird 支線]Day 56 — let 與 const 的生存範圍 – pvt5r486 – Medium

Source link 作用域以函式 ( function ) 為劃分的例子 function test(){var a = 10;if (a === 10){var b = 60;}console.log(b); // 60}test(); 這個例子因為所有的程式都被包覆在 test 函式內,所以 console.log 可以取用變數 b 。 作用域以區塊 ( block ) 為劃分的例子 使用同一個例子當作對照組 function test(){var a = 10;if (a === 10){let b = 60;}console.log(b); // b is not defined}test(); 原因是因為「使用 let 、 . . . Read more

 

[JavaScript Weird 支線]Day 54 — let 與 const – pvt5r486 – Medium

Source link let 與 const 是 ES6 之後才加入的宣告變數的方式,宣告出來的變數表現也不太相同,這篇記錄會比較著墨於 const 的表現上。 Photo by rawpixel on Unsplash 什麼是變數 首先必須要先了解什麼是變數,這將有助於了解後續相關知識。 只有透過 var / let / const 宣告的才算是變數 變數只存在於當前範圍下,而且不能刪除 變數指向物件的記憶體位址,不包含物件的內容亦不會有型別,換句話說變數內不會裝著字串「安安」或是數字「5 」,變數只會儲存「要指向該物件的記憶體位址」 使用 var 建立一個全域變數 a ,這時的變數 a 會被掛到 window 物件下成為屬性,並且無法被刪除。 一些關於變數、屬性的比較可以看這篇初次參加保哥的《 JavaScript 開發實戰:核心概念篇》感想或者是看當天上課的筆記。 var 與 let 這兩者的行為是比較接近的,但在範圍 ( Scope ) 以及一些表現上有點不同,之後會有比較詳細的介紹,或者是喚醒其他世界線的記憶,如果不想思考的話,結論就是「從現在開始都用 let 取代 var 」。 const . . . Read more

 

[JavaScript Weird 支線]Day 53 — 「==」和「===」 – pvt5r486 – Medium

Source link 原始型別與物件型別的差異 之前提到一些原始型別 ( Primitive Types ) 與物件型別 ( Object Types )的差異,這邊將提到另外一個差異: 與原始型別不同,物件型別是比較記憶體位址 var obj = { number: 1 }var obj2 = obj;console.log(obj === obj2); // true 眼尖的你應該會發現,比較表上明明寫著兩個物件相比都是 false ,那麼為什麼這邊會是 true 呢? 我們可以把這段 code 在記憶體的樣子畫出來: 可以發現變數 obj 與 obj2 都是指向同一個記憶體位址,因此第三行的比較其實是「比較兩個變數指向的記憶體位址」,既然兩個變數都指向同一個記憶體位址,那麼答案自然會是 true 。 同理,修改一下例子,並畫圖了解: var obj = { number: 1 . . . Read more

 
Translate »