[javascript] delete 和設為 undefined 差別在哪?

前一陣子在討論刪除一個變數的屬性值,應該用 delete 還是設為 undefined 呢? 讓我們來看看兩種作法差別在哪 undefined單純只是將屬性值改為 undefined ,屬性仍然存在. delete刪除此 Object 的屬性 直覺看起來好像 delete 可以準確的刪除此屬性值,但有個要注意的地方是 delete 並不會刪除 prototype chain 的屬性值 舉個例子: 因此可能要注意的是,如果要避開 prototype chain 上面的屬性值 必須要使用 hasOwnProperty 進一步檢查屬性值 XD 參考資料: https://stackoverflow.com/questions/14967535/delete-a-x-vs-a-x-undefined

Continue reading


[javascript] 陣列與物件,delete與splice差異

在 javascript 有分為物件與陣列。常見刪除的方法有 delete 與 splice 首先介紹一下如何辨別物件與陣列 陣列:   物件: 兩個其實很像都是 key-value ,但其實兩個繼承的 prototype 方法不同( Array 與 Object ) 因此: 但透過 typeof 來看的話其實兩個都屬於 object,因此我們必須透過 contrustor 來判斷彼此的不同 delete 與 splice delete 刪除物件的屬性或方法,但不會刪除物件原型的屬性或方法。 如: splice(index,howmany,item1,…..,itemX) Array 原型的一個方法 可以選定元素後,向后刪除多個元素或插入新元素 如: 比較 delete 與 splice 應用在 array 上的差別 splice: delete: 參考資料: https://github.com/dreamline2/Front_End_Exchange/wiki/%E4%BD%BF%E7%94%A8-delete-%E5%88%AA%E9%99%A4%E7%89%A9%E4%BB%B6%E7%9A%84-%22%E5%B1%AC%E6%80%A7%22-%E5%8F%8A-%22%E6%96%B9%E6%B3%95%22 http://guang.logdown.com/posts/278890-javascript-array-vs-object

Continue reading