noo*_*oob 2 javascript oop null object
var obj = {};
typeof obj; // returns "object"
obj instanceof Object // return true
typeof null // returns "object"
null instanceof Object // returns false
Run Code Online (Sandbox Code Playgroud)
怎么样
typeof undefined // return "undefined"
undefined instanceof undefined
// ERROR: Uncaught TypeError: Expecting a function in instanceof check,
// but got undefined
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我已经阅读了很多关于 SO 的相关主题,但仍然无法理解。
理解'typeof'会返回一个字符串,所以它几乎反映了Javascript中的规则。(例如,null是一个对象......很好......)但是为什么“null instanceof Object”返回false?
“x 实例的 y”
这是否意味着“x”必须由“y”构造函数创建?而对于 null,情况并非如此?
编辑
如果您能解释除语法和返回值之外的 instanceof 和 typeof 背后的不同意图,我们将不胜感激。
null 和 undefined 的区别
typeof null // object (bug in ECMAScript, should be null)
typeof undefined // undefined
null === undefined // false
null == undefined // true
Run Code Online (Sandbox Code Playgroud)
参考文献
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
这只是设计决策可能是人为的或奇怪的。根据一元typeof 表达式,如果评估如下。我刚刚包括了重要的观点。
Table 20:
??????????????????????????
? Type of val ? Result ?
??????????????????????????
? null ? "object" ?
??????????????????????????
Run Code Online (Sandbox Code Playgroud)
所以,我们对此无能为力。它是按设计状态。但是返回false是正确的,因为null调用有一个单独的类型Null type
Null type:唯一值为空值的类型
null显然,它不是 Object 的实例,因为它有自己的类型。只是typeof运算符返回"object"。这与javascript的设计有关。
为什么会这样?将不得不问 Brendan Eich(Javascript 的创始人)。
| 归档时间: |
|
| 查看次数: |
1971 次 |
| 最近记录: |