这里的意思是__proto__指向的内存指针与Person.prototype一致。
当Person.prototype再次被赋予另外一个内存空间的时候,原有的空间并没有被释放。
__proto__任然指向原来的内存空间。
所以当想要改变父类祖先的属性的时候,千万不要再次赋予新的内存空间。
此处便是祖先指向另外一块内存空间。
可以通过直接修改属性值去改变父类祖先的属性。
以下是原型链的基本表达方式,通过一系列的祖先的扣合,形成了一条原型链。
所有对象最终的原型指向Object.prototype
一致最终原型的方法如下
方法
Object.prototype.defineGetter()
关联一个函数到一个属性。访问该函数时,执行该函数并返回其返回值。
Object.prototype.defineSetter()
关联一个函数到一个属性。设置该函数时,执行该修改属性的函数。
Object.prototype.lookupGetter()
返回使用 defineGetter 定义的方法函数 。
Object.prototype.lookupSetter()
返回使用 defineSetter 定义的方法函数。
Object.prototype.hasOwnProperty()
返回一个布尔值 ,表示某个对象是否含有指定的属性,而且此属性非原型链继承的。
Object.prototype.isPrototypeOf()
返回一个布尔值,表示指定的对象是否在本对象的原型链中。
Object.prototype.propertyIsEnumerable()
判断指定属性是否可枚举,内部属性设置参见 ECMAScript [[Enumerable]] attribute 。
Object.prototype.toSource()
返回字符串表示此对象的源代码形式,可以使用此字符串生成一个新的相同的对象。
Object.prototype.toLocaleString()
直接调用 toString()方法。
Object.prototype.toString()
返回对象的字符串表示。
Object.prototype.unwatch()
移除对象某个属性的监听。
Object.prototype.valueOf()
返回指定对象的原始值。
Object.prototype.watch()
给对象的某个属性增加监听。
Object.prototype.eval()
在指定对象为上下文情况下执行javascript字符串代码,已经废弃。