2017-04-22 62 views
0

Javascript中的函數是對象。而ES6中的類關鍵字是語法糖,實際上是一個函數,所以類是對象?JavaScript ES6中的類對象?

+0

什麼是認爲這背後的問題的實際問題/?如果是關於繼承,幾乎JS中的所有東西都從Object繼承,甚至是基元,儘管它們不是Object的實例。還是關於類型檢查?或者還有什麼問題呢? – Thomas

+0

我有一個基於靜態語言的基於類的OOP背景。這對我來說似乎很奇怪。當我從一個類(例如MyClass)創建一個對象並用typeof檢查它時,typeof表示它是'object',而不是'MyClass'。 –

回答

3

是的。

class MyClass {} 
 

 
console.log(MyClass instanceof Object);

+1

但請注意,可能存在不是'instanceof Object'的對象:'console.log(Object.create(null)instanceof Object)'。 –

+1

也注意到原語也從Object繼承,儘管它們不是Object的實例:''use strict'; (「%o%s是Object的一個實例,雖然它有」,this,this instanceof Object?「是」:「不是」,foo); } 「someText」.foo(); Math.PI.foo(); Math.PI.foo(); (1 <2).foo();' – Thomas

+1

@Thomas這是不正確的。基元不從'Object'繼承。對原語執行屬性訪問會將其強制轉換爲其對應的包裝器對象,並且包裝器對象從Object繼承。 'Object.prototype.myVal = 5; var myStr =「a」;的console.log(myStr.myVal); myStr.myVal = 7;的console.log(myStr.myVal);' – JLRishe