预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JavaScript中的原型链prototype详解JavaScript中的原型链prototype详解JavaScript中的继承是通过原型链(prototypechain)来完成的:每个对象内部都有另外一个对象作为其prototype而存在,对象从这个prototype中继承属性(property)。对于每个对象来说,可以用以下三种方式来访问其原型对象:1.__proto__。可以通过对象的__proto__属性来访问其原型对象。该属性仅在Firefox、Safari和Chrome中得到支持,在IE和Opera中不支持。2.Object.getPrototypeOf()。可以将对象作为参数传入Object.getPrototypeOf()方法,执行后即返回对象的原型对象。此方法仅在ECMAScript5标准中得到支持。3.o.constructor.prototype。通过先获取对象的constructor函数,然后再通过访问constructor函数的prototype属性来访问到原型对象。使用此方法的前提为:对象中存在指向构造函数的constructor属性。判断两个对象间是否存在原型链关系可以使用isPrototype()方法:复制代码代码如下:varp={x:1};varo=Object.create(p);console.log(p.isPrototypeOf(o));//true对于所有用字面量创建的.对象而言,其prototype对象均为Object.prototype(作为一个特殊对象,Object.prototype没有原型对象):复制代码代码如下:varx={a:18,b:28};console.log(x.__proto__);//Object{}而对于所有用new操作符创建的对象而言,其prototype对象均为constructor函数的prototype属性:复制代码代码如下:varx={a:18,b:28};functionTest(c){this.c=c;}Test.prototype=x;vart=newTest(38);console.log(t);//Object{c=38,a=18,b=28}console.log(t.__proto__);//Object{a=18,b=28}console.log(t.__proto__.__proto__);//Object{}JavaScript中使用new操作符创建对象的过程如下:1.创建一个新的空对象。2.将这个对象的__proto__属性指向constructor函数的prototype属性。3.将这个对象作为this参数,执行constructor函数。从上述创建过程可以得出结论:所有从同一个constructor函数中构造出来的对象,其__proto__属性(也即其原型对象)相等,也就是说,只存在一个原型对象:复制代码代码如下:vart=newTest(38);vart2=newTest(68);console.log(t===t2);//falseconsole.log(t.__proto__===t2.__proto__);//true