国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

總結javascript基礎概念(三):js對象原型鏈

yzd / 1858人閱讀

摘要:執行構造函數的一步說明對象可以通過函數來創建。是最頂級的構造函數,對象里面,就有好幾個其他屬性。構造函數與普通函數并沒有區別,只是調用方式不同。

主要問題:
1、構造函數和普通函數有區別么?什么區別?
2、prototype和__proto__有什么不同?
3、instanceof的作用機制,為什么有限制?
4、ES6的相關方法,Class繼承原理?

三、對象與原型

(一)、數據類型
Js共有6種數據類型:

5種基本數據類型 undefined,null,string,number,Boolean
1種復雜數據類型 Object

Object 數據類型可以分為兩種:

函數(包括各種原生、自定義的構造函數):
    Object(),Function(),Array(),Date(),,,
對象實例(由函數創建的) {,,},[,,]...

(二)、創建對象

很簡單的一段代碼,我們來看看這個new究竟做了什么?我們可以把new的過程拆分成以下三步:
<1> var p={}; 也就是說,初始化一個對象p。
<2> p.__proto__=Person.prototype;
<3> Person.call(p); 也就是說構造p,也可以稱之為初始化p。//執行構造函數的一步

說明:對象可以通過函數來創建。對象都是通過函數創建的。

每個函數都有一個prototype屬性,指向一個對象,對象默認只有一個叫做constructor的屬性,指向這個函數本身。

Object是最頂級的構造函數,prototype對象里面,就有好幾個其他屬性。

每個對象都有一個__proto__,可成為隱式原型。

自定義函數的prototype本質上就是普通對象實例,都是被Object創建,所以它的__proto__指向的就是Object.prototype。Object.prototype確實一個特例——它的__proto__指向的是null。

(三)、instanceof

Instanceof運算符的第一個變量是一個對象,暫時稱為A;第二個變量一般是一個函數,暫時稱為B。
Instanceof的判斷隊則是:沿著A的__proto__這條線來找,同時沿著B的prototype這條線來找,如果兩條線能找到同一個引用,即同一個對象,那么就返回true。如果找到終點還未重合,則返回false。
所以instanceof 無法檢測不同iframe創建的對象實例。

(四)、ES6新方法,新特性
Object.setPrototypeOf(),Object.getPrototypeOf()。新增加幾個方法直接操作對象的__proto__屬性,實現對象之間的聯系。
Class的對象語法糖,模仿面向對象的語法,勉強提供了JS中的類的概念。然而并沒有改變原型鏈的實質,只是更加隱藏的更深。

(五)、繼承與委托
與純凈面向對象的語言不同,JS本質并沒有類和實例的概念。JS中一切皆對象(除了少數基本類型),是真正的面向“對象”。
構造函數與普通函數并沒有區別,只是調用方式不同。
與竭力模仿面向對象的方式來使用JS,使得代碼繼承邏輯十分復雜抽象。
相比之下,使用委托的思想,直接修改對象的__proto__屬性指向,來訪問委托對象上的屬性和方法,在邏輯上更簡潔直觀。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107391.html

相關文章

  • JS程序

    摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環大法了~ 《小分享》JavaScript中數組的那些迭代方法~ ...

    melody_lql 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評論0 收藏0
  • SegmentFault 技術周刊 Vol.32 - 七夕將至,你的“對象”還好嗎?

    摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評論0 收藏0
  • JS前端面試總結

    摘要:春招季如何橫掃面試核心考點基礎版前端面試之路二基礎整理的繼承和的繼承有什么區別的繼承時通過或構造函數機制來實現。作用創建私有變量,減少全局變量,防止變量名污染。異步瀏覽器訪問服務器請求,用戶正常操作,瀏覽器后端進行請求。 春招季如何橫掃 Javascript 面試核心考點(基礎版)?前端面試之路二(javaScript基礎整理) ES5的繼承和ES6的繼承有什么區別 ES5的繼承時通過...

    ThinkSNS 評論0 收藏0

發表評論

0條評論

yzd

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<