在这幅图中,我们为Admin的原型添加了一个state()方法,如图有两种方式,
被注释的第一种方式有一定的限制(一定要在设置原型链继承之前设置)
因为这种方式是Admin.prototype在内存空间重新建立了一块新的地址来存放数据,只不过里面的constructor仍然指向源Admin,
如果先设置了Admin.prototype的继承,那么如此一来,Admin.prototype对User.prototype的继承指向就会丢失,未被引用的这个“Admin.prototype”会被自动垃圾回收。
新建立带有state()方法的Admin原型并没有指向User.prototype作为原型链上级。
而Admin.prototpye.state = ... 是在既有的内存地址中进行的数据添加,那么地址指向仍然不变。
这两者一定不能放在一起使用,因为他们都不是对既有数据的改写,而是在内存构建新的地址,不管什么编写顺序都会造成冲突。
注意,使用Obeject.create的时候是没有constructor构造函数的,而且使用这种添加方式的构造函数会有一些权限变化。