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

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

 更新時間:2016年08月26日 08:55:05   投稿:lijiao  
這篇文章主要和大家聊一聊JavaScript的New關(guān)鍵字,一般我們通過New關(guān)鍵字來創(chuàng)建一個類的實例對象,感興趣的小伙伴們可以參考一下

原型和閉包算是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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論