js學習筆記 037 物件的三個屬性

2021-06-16 23:23:19 字數 1112 閱讀 6472

原型屬性:ecmascript5將物件作為引數傳入object.getprototypeof()可以查詢它的原型。在ecmascript3中,則沒有與這等價的函式。但經常使用表示式o.constructor.prototype來檢測乙個物件的原型。能過

new表示式建立的物件,通常會繼承了個

constructor

屬性,這個屬性指代建立這個物件的建構函式。

類屬性:是乙個字串,用以表示物件的型別資訊。ecma5 和ecma3並沒提供設定這個屬性的方法。,並只有一種間接的方法可以查詢它。預設它的tostring(繼承自object.prototype)返回如下字串:[object class]

要想獲得物件的類,可以呼叫物件的tostring()方法,然後提取已返回字串中的第8個到倒數第二個位置之間的字串。注意很多物件繼承的tostring方法重寫啦。所以要呼叫正確的 tostring方法,要使用function的call方法

function classof(o)

注意:對於物件直接量和object.create建立的物件的類屬性是」object」,那些自定義建構函式建立的物件也是一樣,類屬性也是」object」。對於自定義的類來說沒辦法通過類屬性來區分物件的類

可擴充套件性:目前js的內建物件和自定義物件都是可擴充套件的,宿主物件的可擴充套件性是由js引擎定義的。es5可以通過object.exextensible()來判斷該物件的可擴充套件性。object.preventextensions()將物件轉換為不可擴充套件的,就無法再將其轉換回可擴充套件了。同樣需要注意的是,只影響物件本身的可擴充套件性。如果給乙個不可擴充套件的物件原型新增屬性,這個不可擴充套件物件同樣會繼承這些新屬性。object.seal()更嚴格一些。除了不可擴充套件,還將物件所有自有屬性設定為不可配置。即不能給這個物件新增新屬性,而且它已有的屬性也不可刪除或配置。可以通過object.isseal()來判斷物件是否封閉。object.freeze()將更加嚴格。除了將物件設定為不可擴充套件的和將其屬性設定為不可配置之外,還可以將它自有的所有資料屬性設定為唯讀(訪問器有setter方法的,不受影響。仍可以給屬性賦值),可以通過 object.isfrozen()來檢測物件是否凍結。

js學習筆記 028 物件的建立

可以通過直接量,關鍵字new和ecmascript 5 object.create 函式來建立物件。物件直接量 若干名值對組成的對映表,名值對中間用冒號分開,名值對之間用逗號分隔。整個對映錶用括號括起來。通過new建立物件 關鍵字new後跟隨乙個函式呼叫。這裡的函式稱為建構函式,建構函式用以初始化乙...

es6學習筆記(三)物件

在低 開發中,尤其是在低 編輯裡定義事件的處理函式中,最常見的概念就是物件了,我們需要熟記這個概念,因為你看官方的 的時候隨時隨地就會有這種語法,你掌握了學習起來難度也就降低了。es6 物件教程 啥是物件呢?其實簡單的理解就是它可以有屬性和方法,你看到一隊括號包起來的語法,那就是物件的意思,教程中也...

es6學習筆記三 物件的擴充套件

寫法 let json return1 fn1 console.log json.fn console.log json.fn1 es6的寫法 let json console.log json.fn2 用來比較兩個值是否嚴格相等,與嚴格比較運算子 的行為基本一致,不同之處只有兩個 一是 0不等於 ...