空是一個對象吧?所以如果我將x設置爲null,爲什麼我不能獲得構造函數值?
var x = null;
alert(typeof x);
alert(x.constructor);
空是一個對象吧?所以如果我將x設置爲null,爲什麼我不能獲得構造函數值?
var x = null;
alert(typeof x);
alert(x.constructor);
NULL不是在Javascript對象 - 空是null
原始類型的單獨的情況,因此沒有構造。
null
在JS中是一個原始值。它不是由任何構造函數構造的,因此它沒有constructor
屬性。 typeof null
是'object'
基本上是由於歷史原因保留的一個可怕的謊言。不要指望JS的過於一致,你會失望!
原始值往往會表現得像在JS由於自動裝箱對象:(1).constructor
作品儘管1
也作爲一個原始值,因爲它隱式調用new Number(1)
。但沒有對象形式的null
(或undefined
)自動轉換爲,所以在這種情況下,你會得到一個錯誤。
一般而言,您應該避免使用constructor
。對於構建在JS之上的許多類/實例模型,它不會完全按照您的想法進行操作。 instanceof
通常效果更好。
也可能重複的Is null an object in JavaScript? – stillstanding 2010-12-06 20:22:23
@birryree,它不是該主題的副本。那一個是關於`null`和`undefined`之間的區別,而這是關於`null`本身是否是一個對象的問題。 – Harmen 2010-12-06 20:22:54