2010-12-06 91 views
6

可能重複:
Null object in javascript是否爲null對象?

空是一個對象吧?所以如果我將x設置爲null,爲什麼我不能獲得構造函數值?

var x = null; 
alert(typeof x); 
alert(x.constructor); 
+1

也可能重複的Is null an object in JavaScript? stillstanding 2010-12-06 20:22:23

+0

@birryree,它不是該主題的副本。那一個是關於`null`和`undefined`之間的區別,而這是關於`null`本身是否是一個對象的問題。 – Harmen 2010-12-06 20:22:54

回答

0

NULL不是在Javascript對象 - 空是null原始類型的單獨的情況,因此沒有構造。

11

null在JS中是一個原始值。它不是由任何構造函數構造的,因此它沒有constructor屬性。 typeof null'object'基本上是由於歷史原因保留的一個可怕的謊言。不要指望JS的過於一致,你會失望!

原始值往往會表現得像在JS由於自動裝箱對象:(1).constructor作品儘管1也作爲一個原始值,因爲它隱式調用new Number(1)。但沒有對象形式的null(或undefined)自動轉換爲,所以在這種情況下,你會得到一個錯誤。

一般而言,您應該避免使用constructor。對於構建在JS之上的許多類/實例模型,它不會完全按照您的想法進行操作。 instanceof通常效果更好。