摘要:執行構造函數的一步說明對象可以通過函數來創建。是最頂級的構造函數,對象里面,就有好幾個其他屬性。構造函數與普通函數并沒有區別,只是調用方式不同。
主要問題:
1、構造函數和普通函數有區別么?什么區別?
2、prototype和__proto__有什么不同?
3、instanceof的作用機制,為什么有限制?
4、ES6的相關方法,Class繼承原理?
三、對象與原型
(一)、數據類型
Js共有6種數據類型:
5種基本數據類型 undefined,null,string,number,Boolean 1種復雜數據類型 Object
Object 數據類型可以分為兩種:
函數(包括各種原生、自定義的構造函數): Object(),Function(),Array(),Date(),,, 對象實例(由函數創建的) {,,},[,,]...
(二)、創建對象
var Person = function () { }; var p = new Person();
很簡單的一段代碼,我們來看看這個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
function B(){}; var A = new B(); console.log(A instanceof B);
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
摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環大法了~ 《小分享》JavaScript中數組的那些迭代方法~ ...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 1351·2023-04-26 00:35
閱讀 2721·2023-04-25 18:32
閱讀 3367·2021-11-24 11:14
閱讀 778·2021-11-22 15:24
閱讀 1424·2021-11-18 10:07
閱讀 6509·2021-09-22 10:57
閱讀 2780·2021-09-07 09:58
閱讀 3570·2019-08-30 15:54