《你不知道的 js》读书笔记

2019-01-21  本文已影响0人  zchub
  1. typeof null = 'object'的原因?

原理是这样的,不同的对象在底层都表示为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判 断为 object 类型,null 的二进制表示是全 0,自然前三位也是 0,所以执行 typeof 时会返回“object”。

这个设计也太不严瑾了。

  1. 文字形式(字面量)与构造形式(对象)
 var str = 'string';
a.length;    // 6

这里之所以能访问length。
是引擎自动把字面量转换成 String 对象,所以可以访问属性和方法

附加: 对于 Object、Array、Function 和 RegExp(正则表达式)来说,无论使用文字形式还是构 造形式,它们都是对象,不是字面量

  1. 对象的键访问的过程
var a = {};
a[a] = 1;
console.log(a);  // {[object Object]: 1}

在对象中,属性名永远都是字符串。如果是非字符串的字面量则首先会被转为对象。这里a.toString() 则等于“[object Object]”。

  1. 对应的引用
    在赋值对象的时候,实际值指向的是对象的引用(指针,存储地址)
function func1(){};
function func2(){};

var a = func1;
var c = func2;

a === c;  // false;
func2 = func1;  // 
c === func2;  // false.此时  c.name=>"func2"  , func2.name => "func1" 指向不同引用
  1. new 的作用
上一篇 下一篇

猜你喜欢

热点阅读