js语言精粹
1、typeof null == “object” ,所以不能通过typeof ~ == "object",判断为对象 ; a、判断为null的,直接~ === null;b、判断对象(~ && typeof ~ == "object"),因为null为假
2、prototype和__proto__的概念
prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。
__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性)
var a = {}; a.n = 3; a.__proto__.n = 4; console.log(a.n)
3、new 的过程
var Person = function(){}; var p = new Person();
new的过程拆分成以下三步:
(1) var p={}; 也就是说,初始化一个对象p
(2) p.__proto__ = Person.prototype;
(3) Person.call(p); 也就是说构造p,也可以称之为初始化p
var b = function () { console.log(33) } b.prototype.n = function () { return 3 } var c = new b(); console.log(c.__proto__ === b.prototype)