一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

javascript程序設計

時(shí)間:2024-10-22 21:58:11 JavaScript 我要投稿

javascript程序設計

  javascript的原型鏈有顯式和隱式兩種:

  顯式原型鏈:即我們常見(jiàn)的prototype;

  隱式原型鏈:在一般環(huán)境下無(wú)法訪(fǎng)問(wèn),即不可見(jiàn),在FireFox下可以通過(guò)__proto__方式訪(fǎng)問(wèn);隱式原型鏈用于javascript引擎內部對原型鏈的搜尋,通過(guò)顯示原型鏈來(lái)設置;

  一、prototype和__proto__的概念

  prototype是函數的一個(gè)屬性(每個(gè)函數都有一個(gè)prototype屬性),這個(gè)屬性是一個(gè)指針,指向一個(gè)對象。它是顯示修改對象的原型的屬性。

  __proto__是一個(gè)對象擁有的內置屬性(請注意:prototype是函數的內置屬性,__proto__是對象的內置屬性),是JS內部使用尋找原型鏈的屬性。

  用chrome和FF都可以訪(fǎng)問(wèn)到對象的__proto__屬性,IE不可以。

  二、new 的過(guò)程

  var Person = function(){};var p = new Person();

  new的過(guò)程拆分成以下三步:

  (1) var p={}; 也就是說(shuō),初始化一個(gè)對象p

  (2) p.__proto__ = Person.prototype;

  (3) Person.call(p); 也就是說(shuō)構造p,也可以稱(chēng)之為初始化p

  關(guān)鍵在于第二步,我們來(lái)證明一下:

  var Person = function(){};var p = new Person();alert(p.__proto__ === Person.prototype);

  這段代碼會(huì )返回true。說(shuō)明我們步驟2是正確的。

  三、示例

  var Person = function(){};Person.prototype.sayName = function() { alert("My Name is Jacky");};Person.prototype.age = 27;var p = new Person();p.sayName();

  p是一個(gè)引用指向Person的對象。我們在Person的原型上定義了一個(gè)sayName方法和age屬性,當我們執行p.age時(shí),會(huì )先在this的內部查找(也就是構造函數內部),如果沒(méi)有找到然后再沿著(zhù)原型鏈向上追溯。

  這里的向上追溯是怎么向上的呢?這里就要使用__proto__屬性來(lái)鏈接到原型(也就是Person.prototype)進(jìn)行查找。最終在原型上找到了age屬性。

【javascript程序設計】相關(guān)文章:

JavaScript高級程序設計:本地對象Array10-22

網(wǎng)頁(yè)程序設計之實(shí)用JavaScript代碼段09-23

對javascript的理解08-08

常用的JavaScript模式09-22

Javascript的this用法簡(jiǎn)述08-15

JavaScript學(xué)習筆記08-24

JavaScript 基礎教學(xué)09-29

JavaScript的課堂講解09-03

JavaScript常用方法匯總10-25

JavaScript數組常用方法介紹09-04

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看