2016年6月29日

[筆記] 談談JavaScript中最單純的原型繼承(prototypal inheritance)─ Object.create

在先前的筆記中,我們談到可以使用 function constructor 來建立物件,同時我們也提到 function constructor 這種概念是用來模仿 Java 語言而產生的(參考:[筆記] 談談 JavaScrip t中的 function constructor 和關鍵字 new),在其它的程式語言中,會用 class 這個關鍵字來設定該物件要長什麼樣子,然後透過關鍵字 new 來建立物件。 然而,和其他程式語言不同的地方在於,JavaScript 實際上使用的是 prototypal inheritance 而不是 classic inheritance,所以為了讓...

[筆記] 談談 JavaScript 中 for ... in 這個 function

在 JavaScript 中有一個非常常用到的函式 for ... in 迴圈,for...in 的用法和 Array.prototype.forEach 很像,但它可以針對**物件(Object)或陣列(Array)**來使用。 for in 針對物件的基本使用 讓我們先來看一下下面這個例子: var john = { firstName: 'John', lastName: 'Doe' }; for (var prop in john) { console.log(prop + ':' + john[prop]); } 我們建立一個物件名稱為...

2016年6月28日

[筆記] 談談 JavaScript 中內建的 function constructors 及應注意的地方

在這篇筆記中讓我們來看一些JavaScript中內建的 function constructors。 new Number() new Number(); 首先,讓我們輸入: var num = new Number(3); console.log(num); console.log(Number.prototype); 從 new 這種用法我們可以理解到 Number 是 JavaScript 中內建的一個 function constructor,也就是說它有內建的 prototype 在內,而且很重要的是,因為它是透過 function construct...

2016年6月22日

[筆記] 談談 JavaScript 中的 function constructor 和 prototype 的建立

在上一篇筆記中我們說明了如何透過函式建構式(function constructor)搭配關鍵字 new 來建立物件,但其實這樣只學了一半,在這篇我們會補齊另一半,說明 function constructor 如何用來設定該物件的原型(prototype)。 我們之前有提到,在 JavaScript 中的函式其實也是一種物件,其中包含一些屬性像是該函式的名稱(Name)和該函式的內容(Code),但其實 function 這裡面還有一個屬性,這個屬性稱做 prototype,這個屬性會以空物件的型式呈現。 除非你是把 function 當做 function constructor...

[筆記] 談談 JavaScript 中的 function constructor 和關鍵字 new

在前幾篇的筆記中,我們已經對於物件(object)、原型(prototype)、繼承(inheritance)和原型鏈等等有更多的了解,現在讓我們來更深入的談論一下JavaScript中建立物件的方法。 先前我們有說明使用 object literal,也就是大括號的方式來建立物件,或者是使用 new Object( ) 的方式,但除此之外,我們還可以使用**函式建構式(function constructor)**的方式來建立物件。但在開始深入了解之前,讓我們先來簡單談一下 JavaScript 發展的歷史,如此我們將更清楚為什麼會使用這樣的方式。 new 和 JavaScript...

2016年6月20日

[筆記] JavaScript 中任何東西的 prototype 到最後都是物件

這篇筆記延伸上一篇所提到的原型(prototype)的概念,說明了在 JavaScript 當中,所有的東西(字串、數值、布林值、函式、陣列、物件)的 prototype 的最後都是物件! 什麼意思呢? 假設我們現在分別建立物件、函式和陣列: // Object var a = { name:'pjchender' } // function var b = function(){ console.log('Hello'); } // Array var c = ['this','is','an','array']; // string var d...