91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 網絡安全 > 
  • 關于JS面向對象中原型和原型鏈以及他們之間的關系及this的詳解

關于JS面向對象中原型和原型鏈以及他們之間的關系及this的詳解

發布時間:2020-05-28 03:10:54 來源:網絡 閱讀:305 作者:shptc 欄目:網絡安全

一:原型和原型對象:

1.函數的原型prototype:函數才有prototype,prototype是一個對象,指向了當前構造函數的引用地址。

2.函數的原型對象__proto__:所有對象都有__proto__屬性, 當用構造函數實例化(new)一個對象時,會將新對象的__proto__屬性指向 構造函數的prototype。

 

1
zhangsan.__proto__==Person.prototype

 

注:在上述代碼中Person是構造函數,zhangsan則是該構造函數的一個實例化對象。

以下用一張圖來解釋原型對象和函數的原型之間的關系:

關于JS面向對象中原型和原型鏈以及他們之間的關系及this的詳解

由以上圖片可以清楚的看出來函數原型和原型對象之間的聯系:

zhangsan是構造函數的一個實例化對象,它的__proto__則是指向它的構造函數prototype,即Person.prototype;

構造函數Person()的__proto__指向函數總類Function的prototype,而Function()本身也會指向Function的prototype,

Person.prototype和Function.prototype都hi會指向Object總類的prototype,即Object.prototype,Object()的__proto__指向Function.prototype

Object.prototype的__proto__會指向null。

綜上:

①所有函數的__proto__都是指向Function的prototype。

②構造函數new出來的對象__proto__指向構造函數的prototype。

③非構造函數實例化出的對象或者對象的prototype的__proto__指向Object的prototype。

④Object的prototype指向null

二:this詳解:

 

1.誰最終調用函數,this指向誰。
①this指向的永遠只可能是對象!!!
②this指向誰永遠不取決于this寫在哪,而是取決于函數在哪調用
③this指向的對象,稱之為函數的上下文context,也叫函數的調用者

2.this指向的規律(與函數調用的方式息息相關):
this指向的情況,取決于函數調用方式有哪些,
①通過函數名()直接調用:this指向window
②通過對象.函數名()調用的:this指向這個對象
③函數通過數組的一個元素,通過數組下標調用的,this指向這個數組
④函數作為window內置函數的回調函數調用時,this指向window如setTimeout setInterval 等
⑤函數作為構造函數用new關鍵字調用時,this指向新new出的對象。

實例:

1
2
3
function func(){
             
        }

①通過函數名()直接調用:this指向window。

1
func();

②通過對象.函數()調用的:this指向這個對象。

狹義對象:

1
2
3
4
5
var obj={
      name:"obj",
      func1:func
    }
obj.func1()

廣義對象:

1
2
3
document.getElementById("div").onclick=function(){
    this.style.backgroundColor="red";
}

③函數通過數組的一個元素,通過數組下標調用的,this指向這個數組  。

1
2
var arr=[func,1,2,3];
arr[0]();

④函數作為window內置函數的回調函數調用時,this指向window。

1
2
setTimeout(func,1000);
setInterval(func,1000);

⑤函數作為構造函數用new關鍵字調用時,this指向新new出的對象。

1
var obj = new func();

以上就是原型鏈和this的 詳解。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清涧县| 滁州市| 德昌县| 开化县| 荥阳市| 永新县| 乌兰浩特市| 城口县| 繁昌县| 临洮县| 海盐县| 巴彦淖尔市| 庆阳市| 肇州县| 海丰县| 陇南市| 衡水市| 普陀区| 仙游县| 澄迈县| 东辽县| 岳阳县| 太康县| 南召县| 宣城市| 江阴市| 顺义区| 镇宁| 呈贡县| 凤庆县| 恩施市| 清镇市| 宝丰县| 元朗区| 贡觉县| 乐陵市| 方山县| 阳东县| 彩票| 曲阜市| 康平县|