国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

談?wù)凧avaScript的New關(guān)鍵字

2019-11-20 09:09:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原型和閉包算是JavaScript中最常見,最難以理解,最容易被當(dāng)做問(wèn)題的兩個(gè)部分,當(dāng)然還有它們的延伸,如作用域鏈,繼承等等吧,我最近也是各種看,各種翻,記錄點(diǎn)自己的心得,寫寫總會(huì)讓自己的理解更深一些。(跟標(biāo)題的關(guān)系不大啦,就感慨句,每次總感覺自己懂了,再翻還是收獲滿滿)

先談一下JavaScript中New關(guān)鍵字吧,通常我們通過(guò)它來(lái)創(chuàng)建一個(gè)類的實(shí)例對(duì)象,在JavaScript中,實(shí)例化對(duì)象之后,也就繼承了類的屬性以及方法。通過(guò)代碼來(lái)演示一下 

function Person(name){ this.name = name;}Person.age= "23";Person.prototype.say = function(){ console.log("I'm " + this.name);};var person= new Person("王方"); console.log( person.name, //王方 person.height //undefined);person.say(); //I'm 王方 console.log( Person.name, //Person Person.age//23);Person.say(); //Person.say is not a function

我們看下這一行 
var person= new Person("王方");
new 到底做了什么呢?恩 JS引擎做的工作就是下面這樣  

var obj = {};obj.__proto__ = Person.prototype;var result = Person.call(obj,"王方");return typeof result === 'obj'? result : obj; 

1.首先創(chuàng)建一個(gè)新對(duì)象 

2.把obj的__proto__ 指向Person的原型對(duì)象prototype,此時(shí)便建立了obj對(duì)象的原型鏈:obj->Person.prototype->Object.prototype->null 

3.在obj對(duì)象的執(zhí)行空間調(diào)用Person函數(shù)并傳遞參數(shù)“王方”。 相當(dāng)于var result = obj.Person("王方")。當(dāng)這句執(zhí)行完之后,obj便產(chǎn)生了屬性name并賦值為"王方"。 

4.判斷返回值,如果無(wú)返回值或者返回一個(gè)非對(duì)象值,就將obj返回,否則講返回值作為新對(duì)象返回(有點(diǎn)繞口,三元運(yùn)算符,自己看下吧) 

總結(jié):
 Javascript的new關(guān)鍵字主要的作用是繼承,如上例子所言,但是要記住一點(diǎn),Person是一個(gè)函數(shù),而person是一個(gè)對(duì)象,至于函數(shù)與對(duì)象之間的區(qū)別,我有時(shí)間再寫吧。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉鱼县| 吴堡县| 拉萨市| 西畴县| 上虞市| 勃利县| 四子王旗| 卓资县| 东乡| 九台市| 越西县| 游戏| 靖江市| 大冶市| 隆回县| 保康县| 峨眉山市| 武川县| 循化| 醴陵市| 兴安县| 仙居县| 静安区| 新平| 怀集县| 天台县| 婺源县| 富民县| 瑞丽市| 通辽市| 楚雄市| 赤水市| 大埔区| 枞阳县| 济阳县| 高尔夫| 兴化市| 玉山县| 南丰县| 关岭| 永清县|