原型原型链有关问题记录

1
2
3
function Person() {};
Person.prototype = null;
var person = new Person();

不要觉得这样就切断了原型链,要了解清楚new关键字创建一个对象的时候,会查看Person.prototype是不是一个对象,如果不是的话就设置为Object.prototype;
注意哦如果彻底重置了原型链,只有修改后从新new才会看得到效果;对之前new的对象无效;
如果你想让Person没有原型链,可以var person = Object.create(null);

1
2
3
4
5
6
Object.create(null)

// 等价于

var obj = new Object();
obj.__proto__ = null;

神一样存在的原型图