摘要:通過創(chuàng)建的對(duì)象使用構(gòu)造函數(shù)的屬性作為它們的原型。通過內(nèi)置構(gòu)造函數(shù)比如和創(chuàng)建的對(duì)象包含類屬性,它與構(gòu)造函數(shù)名稱相匹配。這是客戶端宿主對(duì)象定義一個(gè)自定義構(gòu)造函數(shù)可擴(kuò)展性對(duì)象的可擴(kuò)展性表示是否可以給對(duì)象添加新屬性。
對(duì)象的三個(gè)屬性
每個(gè)對(duì)象都擁有三個(gè)特性(屬性)(object attribute):
對(duì)象的原型(prototype)。指向另外一個(gè)對(duì)象,本對(duì)象的屬性繼承自它的原型對(duì)象。
對(duì)象的類(class)。是一個(gè)表示對(duì)象類型的字符串。
對(duì)象的擴(kuò)展標(biāo)記(extensible flag)。指明了(在ES5中)是否可以向該對(duì)象添加新屬性。
原型屬性【01】對(duì)象的原型屬性是用來繼承屬性的。
【02】我們經(jīng)常把“對(duì)象的原型屬性”直接叫做“對(duì)象的原型”。
【03】原型屬性是在對(duì)象創(chuàng)建之初就設(shè)置好的。
通過對(duì)象直接量創(chuàng)建的對(duì)象使用Object.prototype作為它們的原型。
通過new創(chuàng)建的對(duì)象使用構(gòu)造函數(shù)的prototype屬性作為它們的原型。
通過Object.create()創(chuàng)建的對(duì)象使用第一個(gè)參數(shù)(也可以是null)作為它們的原型。
【04】在ES5中,Object.getPrototypeOf(obj)可以查詢它的原型。
并不能直接通過對(duì)象實(shí)例.prototype屬性的形式訪問到對(duì)象的原型。
不能在對(duì)象實(shí)例的prototype上添加屬性和方法。
比如:
類屬性【01】ES3和ES5都未提供設(shè)置這個(gè)屬性的方法,并只有一種間接的方法可以查詢它。
【02】要想獲得對(duì)象的類,可以調(diào)用對(duì)象的toString()方法,然后提取已返回字符串的第8個(gè)到倒數(shù)第二個(gè)位置之間的字符。
默認(rèn)的toString()方法(繼承自O(shè)bject.prototype)返回了如下這種格式的字符串:
[object class]
很多對(duì)象繼承的toString()方法重寫了,為了能調(diào)用正確的toString()版本,必須間接地調(diào)用Function.call()方法。
【03】
通過內(nèi)置構(gòu)造函數(shù)(比如Array和Date)創(chuàng)建的對(duì)象包含“類屬性”(class attribute),它與構(gòu)造函數(shù)名稱相匹配。(疑惑)
宿主對(duì)象也包含有意義的“類屬性”,但這和具體的JS實(shí)現(xiàn)有關(guān)。
對(duì)象的4種創(chuàng)建方式創(chuàng)建的對(duì)象的類屬性都是“Object”。
【04】classof()函數(shù),可以返回任何類型任意對(duì)象的類:
function classof(o) { if (o === null) return "Null"; if (o === undefined) return "Undefined"; return Object.prototype.toString.call(o).slice(8,-1); }
數(shù)字、字符串和布爾值可以直接調(diào)用toString()方法,就和對(duì)象調(diào)用toString()方法一樣
這些類型的變量調(diào)用toString()方法,而不是通過它們的直接量調(diào)用toString(),比如1.toString()是不對(duì)的,而是要先聲明變量var a=1;然后調(diào)用a.toString()。
classof(null) // => "Null" classof(1) // => "Number" classof("") // => "String" classof(false) // => "Boolean" classof({}) // => "Object" classof([]) // => "Array" classof(/./) // => "Regexp" classof(new Date()) // => "Date" classof(window) // => "Window"(這是客戶端宿主對(duì)象) function f() {}; // 定義一個(gè)自定義構(gòu)造函數(shù) classof(new f()); // => "Object"可擴(kuò)展性
【01】對(duì)象的可擴(kuò)展性表示是否可以給對(duì)象添加新屬性。
可擴(kuò)展屬性的目的是將對(duì)象“鎖定”,以避免外界的干擾。
【02】所有內(nèi)置對(duì)象和自定義對(duì)象都是顯式可擴(kuò)展的,除非將它們轉(zhuǎn)換為不可擴(kuò)展的,宿主對(duì)象(BOM,DOM)的可擴(kuò)展性是由JS引擎定義的。
【03】如果給一個(gè)不可擴(kuò)展的對(duì)象的原型添加屬性,這個(gè)不可擴(kuò)展的對(duì)象同樣會(huì)繼承這些新屬性。
(zyx456:原型添加屬性,繼承原型的對(duì)象也自動(dòng)獲取這些新屬性,即使該對(duì)象為不可擴(kuò)展性)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/106330.html
摘要:類型描述類型對(duì)象是所有其他類型對(duì)象的父級(jí)使用創(chuàng)建對(duì)象表示使用構(gòu)造函數(shù)方式創(chuàng)建一個(gè)空對(duì)象顯示可以根據(jù)一個(gè)給定值創(chuàng)建一個(gè)對(duì)應(yīng)類型的對(duì)象創(chuàng)建一個(gè)類型的對(duì)象顯示啊哈哈創(chuàng)建一個(gè)類型的對(duì)象顯示啊哈哈屬性描述符表示對(duì)象的屬性或方法的內(nèi)部數(shù)據(jù)結(jié)構(gòu)用于描述對(duì) Object類型 描述 object類型對(duì)象是所有其他類型對(duì)象的父級(jí) 使用Object創(chuàng)建對(duì)象 /* 表示使用構(gòu)造函數(shù)方式創(chuàng)建一個(gè)空對(duì)象 */ v...
摘要:下面是我試圖解釋中三個(gè)點(diǎn)的作用??梢詫⑦@種傳播視為逐個(gè)提取所有單個(gè)屬性并將它們傳遞給新對(duì)象。這意味著下面的代碼將導(dǎo)致您擁有包含重復(fù)元素的數(shù)組。這應(yīng)該是您需要了解的所有內(nèi)容,以便在中使用運(yùn)算符。 這篇文章的標(biāo)題來自我在Quora上被要求回答的一個(gè)問題。下面是我試圖解釋JavaScript中三個(gè)點(diǎn)的作用。希望這對(duì)于將來有相同問題的人來說可以消除圍繞這個(gè)概念的迷霧。 數(shù)組/對(duì)象擴(kuò)展運(yùn)算符 假...
摘要:下面是我試圖解釋中三個(gè)點(diǎn)的作用。可以將這種傳播視為逐個(gè)提取所有單個(gè)屬性并將它們傳遞給新對(duì)象。這意味著下面的代碼將導(dǎo)致您擁有包含重復(fù)元素的數(shù)組。這應(yīng)該是您需要了解的所有內(nèi)容,以便在中使用運(yùn)算符。 這篇文章的標(biāo)題來自我在Quora上被要求回答的一個(gè)問題。下面是我試圖解釋JavaScript中三個(gè)點(diǎn)的作用。希望這對(duì)于將來有相同問題的人來說可以消除圍繞這個(gè)概念的迷霧。 數(shù)組/對(duì)象擴(kuò)展運(yùn)算符 假...
摘要:下面是我試圖解釋中三個(gè)點(diǎn)的作用。可以將這種傳播視為逐個(gè)提取所有單個(gè)屬性并將它們傳遞給新對(duì)象。這意味著下面的代碼將導(dǎo)致您擁有包含重復(fù)元素的數(shù)組。這應(yīng)該是您需要了解的所有內(nèi)容,以便在中使用運(yùn)算符。 這篇文章的標(biāo)題來自我在Quora上被要求回答的一個(gè)問題。下面是我試圖解釋JavaScript中三個(gè)點(diǎn)的作用。希望這對(duì)于將來有相同問題的人來說可以消除圍繞這個(gè)概念的迷霧。 數(shù)組/對(duì)象擴(kuò)展運(yùn)算符 假...
摘要:為要檢測的對(duì)象構(gòu)造函數(shù)創(chuàng)建的對(duì)象繼承了一個(gè)叫的屬性,該屬性指代該構(gòu)造函數(shù),即的原型。使用直接量創(chuàng)建的對(duì)象,也有一個(gè)叫的屬性,該屬性指代構(gòu)造函數(shù),所以直接量創(chuàng)建的對(duì)象的真正原型是,使用方法來檢測對(duì)象的原型并不可靠,在以后的文章中會(huì)提到。 一、原型屬性 1、對(duì)象的原型屬性是用來繼承屬性的,這個(gè)屬性如此重要,我們通常稱為:對(duì)象的原型屬性或?qū)ο蟮脑?。?duì)象的原型是在對(duì)象實(shí)例化的時(shí)候就設(shè)置好的...
閱讀 1126·2021-11-19 09:40
閱讀 974·2021-11-12 10:36
閱讀 1268·2021-09-22 16:04
閱讀 3111·2021-09-09 11:39
閱讀 1270·2019-08-30 10:51
閱讀 1889·2019-08-30 10:48
閱讀 1228·2019-08-29 16:30
閱讀 472·2019-08-29 12:37