談?wù)凧avaScript的New關(guān)鍵字
原型和閉包算是JavaScript中最常見,最難以理解,最容易被當做問題的兩個部分,當然還有它們的延伸,如作用域鏈,繼承等等吧,我最近也是各種看,各種翻,記錄點自己的心得,寫寫總會讓自己的理解更深一些。(跟標題的關(guān)系不大啦,就感慨句,每次總感覺自己懂了,再翻還是收獲滿滿)
先談一下JavaScript中New關(guān)鍵字吧,通常我們通過它來創(chuàng)建一個類的實例對象,在JavaScript中,實例化對象之后,也就繼承了類的屬性以及方法。通過代碼來演示一下
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)建一個新對象
2.把obj的__proto__ 指向Person的原型對象prototype,此時便建立了obj對象的原型鏈:obj->Person.prototype->Object.prototype->null
3.在obj對象的執(zhí)行空間調(diào)用Person函數(shù)并傳遞參數(shù)“王方”。 相當于var result = obj.Person("王方")。當這句執(zhí)行完之后,obj便產(chǎn)生了屬性name并賦值為"王方"。
4.判斷返回值,如果無返回值或者返回一個非對象值,就將obj返回,否則講返回值作為新對象返回(有點繞口,三元運算符,自己看下吧)
總結(jié):
Javascript的new關(guān)鍵字主要的作用是繼承,如上例子所言,但是要記住一點,Person是一個函數(shù),而person是一個對象,至于函數(shù)與對象之間的區(qū)別,我有時間再寫吧。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- javascript中new關(guān)鍵字詳解
- 不用構(gòu)造函數(shù)(Constructor)new關(guān)鍵字也能實現(xiàn)JavaScript的面向?qū)ο?/a>
- Javascript new關(guān)鍵字的玄機 以及其它
- js中的this關(guān)鍵字詳解
- javascript 常用關(guān)鍵字列表集合
- 調(diào)試Javascript代碼(瀏覽器F12及VS中debugger關(guān)鍵字)
- Javascript this關(guān)鍵字使用分析
- JQuery+JS實現(xiàn)仿百度搜索結(jié)果中關(guān)鍵字變色效果
- 用JS將搜索的關(guān)鍵字高亮顯示實現(xiàn)代碼
- 關(guān)鍵字空格替換為逗號的js代碼
相關(guān)文章
xml分頁+ajax請求數(shù)據(jù)源+dom取結(jié)果實例代碼
最近做的一個項目里的某個小功能,主要是為了方便選擇數(shù)據(jù) 演示地址:由于有惡意程序,所以去掉地址2008-10-10千萬不要錯過的JavaScript高效對比數(shù)組差異方法
前端開發(fā)中,我們通常需要對比兩個數(shù)組對象的差異。這其中有很多種方法,但是有些方法會帶來一些問題,所以本文為大家準備了一個高效方法,需要的可以參考一下2023-05-05javascript實現(xiàn)TreeView 無刷新展開的實例代碼
這篇文章介紹了javascript實現(xiàn)TreeView 無刷新展開的實例代碼,有需要的朋友可以參考一下2013-07-07es6 filter() 數(shù)組過濾方法總結(jié)
這篇文章主要介紹了es6 filter() 數(shù)組過濾方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04IE與Firefox在JavaScript上的7個不同句法分享
盡管那需要用長串的、沉悶的不同分支代碼來應(yīng)付不同瀏覽器的日子已經(jīng)過去,偶爾還是有必要做一些簡單的區(qū)分和目標檢測來確保某塊代碼能在用戶的機器上正常運行2011-10-10JavaScript實現(xiàn)自己的DOM選擇器原理及代碼
實現(xiàn)自己的DOM選擇器時匹配行為也應(yīng)該和瀏覽原生匹配行為一致,接下來本文將詳細介紹下實現(xiàn)思路及方法,感興趣的你可以參考下或許對你鞏固知識有所幫助2013-03-03