欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript中的new使用

 更新時(shí)間:2010年03月20日 23:27:30   作者:  
javascript是基于原型(Prototype based)的面向?qū)ο蟮恼Z(yǔ)言,這點(diǎn)不同于我們熟悉的.NET,Java語(yǔ)言,是基于類(lèi)模式(Class based)。
所以javascript中沒(méi)有類(lèi)的概念。理解這一點(diǎn)很重要,很多javascript教程為了讓讀者更容易理解,會(huì)套用他們常用的類(lèi)模式中的概念,這 樣反而讓大家產(chǎn)生歧義。
先進(jìn)段代碼,  
復(fù)制代碼 代碼如下:

function employee(){
this.name="";
this.dept="";
}
employee.prototype={
say:'hello'
}
var p = new employee();

這段代碼,我們會(huì)經(jīng)常用到,其中new關(guān)鍵字最容易引起混淆的一處。這里的new和.NET中的所做的工作不同。
我們可以這樣理解javascript中用new操作創(chuàng)建實(shí)例的過(guò)程,new關(guān)鍵字以employee()為模板創(chuàng)建了一個(gè)新的對(duì)象,它復(fù)制了employee構(gòu)造器中的成員變量(也可以理解為,將p對(duì)象作為參數(shù)傳入構(gòu)造函數(shù)中,并且應(yīng)用函數(shù)中所有this的成員變量),同時(shí)繼承了構(gòu)造器的原型。
我們用代碼模擬new的過(guò)程。
復(fù)制代碼 代碼如下:

//var p = new Object() is also correct.
var p ={};
employee.apply(p);
p.__proto__ = employee.prototype;

__proto__ 是 javascript對(duì)象實(shí)例一個(gè)內(nèi)部屬性,它指向構(gòu)造函數(shù)即employee的prototype屬性,當(dāng)對(duì)象查找某一成員變量時(shí),例如p.say,首先查找自己的成員屬性,如果找到了,返回值,如果沒(méi)找到,就去調(diào)用__proto__來(lái)檢查原型鏈,當(dāng)前例子,也就是在employee.prototype中找到say成員。

相關(guān)文章

最新評(píng)論