談?wù)凧avaScript的New關(guān)鍵字
原型和閉包算是JavaScript中最常見(jiàn),最難以理解,最容易被當(dāng)做問(wèn)題的兩個(gè)部分,當(dāng)然還有它們的延伸,如作用域鏈,繼承等等吧,我最近也是各種看,各種翻,記錄點(diǎn)自己的心得,寫(xiě)寫(xiě)總會(huì)讓自己的理解更深一些。(跟標(biāo)題的關(guān)系不大啦,就感慨句,每次總感覺(jué)自己懂了,再翻還是收獲滿滿)
先談一下JavaScript中New關(guān)鍵字吧,通常我們通過(guò)它來(lái)創(chuàng)建一個(gè)類(lèi)的實(shí)例對(duì)象,在JavaScript中,實(shí)例化對(duì)象之后,也就繼承了類(lèi)的屬性以及方法。通過(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í)間再寫(xiě)吧。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript中new關(guān)鍵字詳解
- 不用構(gòu)造函數(shù)(Constructor)new關(guān)鍵字也能實(shí)現(xiàn)JavaScript的面向?qū)ο?/a>
- Javascript new關(guān)鍵字的玄機(jī) 以及其它
- js中的this關(guān)鍵字詳解
- javascript 常用關(guān)鍵字列表集合
- 調(diào)試Javascript代碼(瀏覽器F12及VS中debugger關(guān)鍵字)
- Javascript this關(guān)鍵字使用分析
- JQuery+JS實(shí)現(xiàn)仿百度搜索結(jié)果中關(guān)鍵字變色效果
- 用JS將搜索的關(guān)鍵字高亮顯示實(shí)現(xiàn)代碼
- 關(guān)鍵字空格替換為逗號(hào)的js代碼
相關(guān)文章
詳解js location.href和window.open的幾種用法和區(qū)別
這篇文章主要介紹了詳解js location.href和window.open的幾種用法和區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
網(wǎng)頁(yè)前臺(tái)通過(guò)js非法字符過(guò)濾代碼(罵人的話等等)
項(xiàng)目中如果需要過(guò)濾非法字符(你不想用戶輸入的任何字符)的話在前臺(tái)可以使用js過(guò)濾,同樣可以提高用戶體驗(yàn),以前都是后臺(tái)過(guò)濾,這樣雙重過(guò)濾用戶體驗(yàn)更好。2010-05-05
詳解ES6 Fetch API HTTP請(qǐng)求實(shí)用指南
本次將介紹如何使用Fetch API(ES6 +)對(duì)REST API的 HTTP請(qǐng)求,還有一些示例提供給大家便于大家理解。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
JS實(shí)現(xiàn)的文字間歇循環(huán)滾動(dòng)效果完整示例
這篇文章主要介紹了JS實(shí)現(xiàn)的文字間歇循環(huán)滾動(dòng)效果,涉及javascript結(jié)合時(shí)間函數(shù)定時(shí)觸發(fā)實(shí)現(xiàn)頁(yè)面元素動(dòng)態(tài)操作相關(guān)技巧,需要的朋友可以參考下2018-02-02
關(guān)于在Typescript中做錯(cuò)誤處理的方式詳解
錯(cuò)誤處理是軟件工程重要的一部分,如果處理得當(dāng),它可以為你節(jié)省數(shù)小時(shí)的調(diào)試和故障排除時(shí)間,我發(fā)現(xiàn)了與錯(cuò)誤處理相關(guān)的三大疑難雜癥:TypeScript的錯(cuò)誤類(lèi)型,變量范圍和嵌套,讓我們逐一深入了解它們帶來(lái)的撓頭問(wèn)題,感興趣的朋友可以參考下2023-09-09
JavaScript變量提升和嚴(yán)格模式實(shí)例分析
這篇文章主要介紹了JavaScript變量提升和嚴(yán)格模式,結(jié)合實(shí)例形式分析了javascript變量提升和嚴(yán)格模式的原理及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-01-01
javascript RadioButtonList獲取選中值
js獲取RadioButtonList值的代碼。2009-04-04
基于JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)計(jì)算器
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05

