网站建设彳金手指排名,上饶网站建设,厦门旅游集团网站建设,杭州网站制作平台使用构造函数初始化对象的过程function Base(){} //函数声明var basenew Base() //对象初始化执行Base()的过程#xff1a; 创建一个名为Base的function对象#xff1a; 执行function Base(){函数体}本质上相当于var Basenew Function(函数体)#xff1b;所以Ba…使用构造函数初始化对象的过程 function Base(){} //函数声明 var basenew Base() //对象初始化 执行Base()的过程 创建一个名为Base的function对象 执行function Base(){函数体}本质上相当于var Basenew Function(函数体)所以Base对象的构造函数的是Function();为Base对象添加属性 添加_proto_属性其属性值Function.prototype,也就说Base对象的原型是其构造函数的prototype属性 在任意类似var xnew X()的过程中都会设置x._proto_X.prptotype;添加prototype属性先用new Object()创建新对象并为新对象创建constructor属性属性值设置为Base;最后将该对象赋值给prototype属性 因为Base.prototypenew Object()所以Base.prototype._proto_Object.prototype;为Base对象添加其他属性如call,construct,scope,length等属性执行var basenew Base() 调用Base的construct属性引用的函数 创建一个新object, 假设为x将Base.prototype赋值给x._proto_属性 如果Base.prototype不是object,将Object.prototype赋值x._proto_调用Base.call(x),对x进行初始化返回x,x就是base;如果Base()使用return返回其他对象base就是其他对象 原型链 因为base._proto_Base.prototype且Base.prototype._proto_Object.prototype;所以base._proto_._proto_Object.prtotype; //原型链 即base继承自Base.prototype,Base.prototype继承自Object.prototype;原型继承 以上原型继承是通过将Base.prototype设置为由Obejct()创建的对象实现的可以通过将任意的构造函数的prototype属性指定为一个对象实现继承function Case(){}; Case.prototypebase; var casenew Case(); case.的原型链是Case.prototype(base),Base.prototype,Object.prototype;对象的constructor属性 由自定义构造函数创建的对象默认没有自己的constructor属性的只有由Object()创建的对象真正拥有constructor属性所以base对象的constructor属性继承自Base.prototype,指向Base();同样case对象的constructor属性也继承自Base.prototype,指向Base(); 红色 对象f的原型是构造函数的prototype属性F.prototype; F.prototype的constructor属性指向f的构造函数FF.prototype作为对象其原型是Object.prototype;青色 构造函数F作为一个对象其原型是Function.prototype Function.prototype的constructor属性指向F的构造函数Function;蓝色 Function作为对象其原型是Function.prototype;黄色 Function.prototype的原型是Object.prototype; Object.prototype的constructor属性指向Function.prototype对象的构造函数Object;紫色 Object作为一个函数其原型是Function.prototype;橙色 Object.prototype的原型是null转载于:https://www.cnblogs.com/qinghe/p/5391558.html