javascript中的new使用
更新時間:2010年03月20日 23:27:30 作者:
javascript是基于原型(Prototype based)的面向?qū)ο蟮恼Z言,這點不同于我們熟悉的.NET,Java語言,是基于類模式(Class based)。
所以javascript中沒有類的概念。理解這一點很重要,很多javascript教程為了讓讀者更容易理解,會套用他們常用的類模式中的概念,這 樣反而讓大家產(chǎn)生歧義。
先進段代碼,
function employee(){
this.name="";
this.dept="";
}
employee.prototype={
say:'hello'
}
var p = new employee();
這段代碼,我們會經(jīng)常用到,其中new關(guān)鍵字最容易引起混淆的一處。這里的new和.NET中的所做的工作不同。
我們可以這樣理解javascript中用new操作創(chuàng)建實例的過程,new關(guān)鍵字以employee()為模板創(chuàng)建了一個新的對象,它復(fù)制了employee構(gòu)造器中的成員變量(也可以理解為,將p對象作為參數(shù)傳入構(gòu)造函數(shù)中,并且應(yīng)用函數(shù)中所有this的成員變量),同時繼承了構(gòu)造器的原型。
我們用代碼模擬new的過程。
//var p = new Object() is also correct.
var p ={};
employee.apply(p);
p.__proto__ = employee.prototype;
__proto__ 是 javascript對象實例一個內(nèi)部屬性,它指向構(gòu)造函數(shù)即employee的prototype屬性,當(dāng)對象查找某一成員變量時,例如p.say,首先查找自己的成員屬性,如果找到了,返回值,如果沒找到,就去調(diào)用__proto__來檢查原型鏈,當(dāng)前例子,也就是在employee.prototype中找到say成員。
先進段代碼,
復(fù)制代碼 代碼如下:
function employee(){
this.name="";
this.dept="";
}
employee.prototype={
say:'hello'
}
var p = new employee();
這段代碼,我們會經(jīng)常用到,其中new關(guān)鍵字最容易引起混淆的一處。這里的new和.NET中的所做的工作不同。
我們可以這樣理解javascript中用new操作創(chuàng)建實例的過程,new關(guān)鍵字以employee()為模板創(chuàng)建了一個新的對象,它復(fù)制了employee構(gòu)造器中的成員變量(也可以理解為,將p對象作為參數(shù)傳入構(gòu)造函數(shù)中,并且應(yīng)用函數(shù)中所有this的成員變量),同時繼承了構(gòu)造器的原型。
我們用代碼模擬new的過程。
復(fù)制代碼 代碼如下:
//var p = new Object() is also correct.
var p ={};
employee.apply(p);
p.__proto__ = employee.prototype;
__proto__ 是 javascript對象實例一個內(nèi)部屬性,它指向構(gòu)造函數(shù)即employee的prototype屬性,當(dāng)對象查找某一成員變量時,例如p.say,首先查找自己的成員屬性,如果找到了,返回值,如果沒找到,就去調(diào)用__proto__來檢查原型鏈,當(dāng)前例子,也就是在employee.prototype中找到say成員。
相關(guān)文章
Bootstrap編寫一個同時適用于PC、平板、手機的登陸頁面
這篇文章主要為大家詳細介紹了Bootstrap編寫一個同時適用于PC、平板、手機的登陸頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06詳解JS中的compose函數(shù)和pipe函數(shù)用法
這篇文章主要介紹了JS中的compose函數(shù)和pipe函數(shù)用法,想深入了解Javascript的同學(xué),可以參考下2021-04-04JavaScript面向?qū)ο髮崿F(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細介紹了JavaScript面向?qū)ο髮崿F(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04webpack結(jié)合express實現(xiàn)自動刷新的方法
這篇文章主要給大家介紹了關(guān)于webpack結(jié)合express實現(xiàn)自動刷新的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用webpack具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05