所以javascript中沒有類的概念。理解這一點很重要,很多javascript教程為了讓讀者更容易理解,會套用他們常用的類模式中的概念,這 樣反而讓大家產生歧義。 先進段代碼, 代碼如下: function employee(){ this.name=""; this.dept=""; } employee.prototype={ say:'hello' } var p = new employee();
這段代碼,我們會經常用到,其中new關鍵字最容易引起混淆的一處。這里的new和.NET中的所做的工作不同。 我們可以這樣理解javascript中用new操作創建實例的過程,new關鍵字以employee()為模板創建了一個新的對象,它復制了employee構造器中的成員變量(也可以理解為,將p對象作為參數傳入構造函數中,并且應用函數中所有this的成員變量),同時繼承了構造器的原型。 我們用代碼模擬new的過程。 代碼如下: //var p = new Object() is also correct. var p ={}; employee.apply(p); p.__proto__ = employee.prototype;