- typeof null = 'object'的原因?
原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判 断为 object 类型,null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“object”。
这个设计也太不严瑾了。
- 文字形式(字面量)与构造形式(对象)
var str = 'string';
a.length; // 6
这里之所以能访问length。
是引擎自动把字面量转换成 String 对象,所以可以访问属性和方法
附加: 对于 Object、Array、Function 和 RegExp(正则表达式)来说,无论使用文字形式还是构 造形式,它们都是对象,不是字面量
- 对象的键访问的过程
var a = {};
a[a] = 1;
console.log(a); // {[object Object]: 1}
在对象中,属性名永远都是字符串。如果是非字符串的字面量则首先会被转为对象。这里a.toString() 则等于“[object Object]”。
- 对应的引用
在赋值对象的时候,实际值指向的是对象的引用(指针,存储地址)
function func1(){};
function func2(){};
var a = func1;
var c = func2;
a === c; // false;
func2 = func1; //
c === func2; // false.此时 c.name=>"func2" , func2.name => "func1" 指向不同引用
- new 的作用