辽阳低价网站建设公司,北京赛车网站开发公司,中国是唯一一个拥有空间站,WordPress怎么做百度小程序每个函数都有一个prototype的属性#xff0c;当我们以这个函数为构造函数创建实例时#xff08;即用new的形式#xff09;#xff0c;创建出来的这个对象是没有prototype的属性的。以下代码为例#xff1a;在console里进行调试cf 拥有一个prototype的属性#xff0c;这个…每个函数都有一个prototype的属性当我们以这个函数为构造函数创建实例时即用new的形式创建出来的这个对象是没有prototype的属性的。 以下代码为例 在console里进行调试 cf 拥有一个prototype的属性这个属性就叫做原型。这个原型本身是一个对象cf{}我们叫它原型对象。 cf 的原型对象有一个constructor的属性它就是构造函数。我们可以看到这个构造函数是cf本身。当然它还有一些别的属性。) cf1 作为 cf 的实例它拥有了cf.prototype里的所有属性。把cf1展开看一下 可以看到cf1 有一个隐式属性_proto_这个属性是无法通过ECMA语句访问到的。它指向了cf.prototype这个原型对象这就是原性链。 原型对象本身作为ECMA内置对象Object的一个实例它也有_proto_指向的是Object.prototype这就构成了一个链表的结构。 这个链表就决定了在查找属性时的顺序。例如ECMA在查找 cf1.p1时会先查找它本身若没有p1这个属性再沿着_proto_找。 在这里 new 操作符所做的事情可以分为以下 1、建立一个新对象cf1 var cf1 cf{ }; 2、将cf1的_proto_指向原型对象 cf1._proto cf.prototype 3、将cf1作为this的参数调用构造函数cf。 cf.call(cf1)转载于:https://www.cnblogs.com/misadancer/p/3167494.html