谈谈你对原型链的理解??这道题的关键在于两点,一是原型对象是什么,二是原型链是怎么形成的原型对象的大部分函数(除了少数内置函数)都有一个原型attribute,也就是原型对象,用来创建新的对象实例,所有创建的对象都会共享原型对象,所以这些对象可以访问原型对象的属性。例如,Object原型对象中存在hasOwnProperty()方法,任何对象都可以将其作为自己的方法使用。用法:object.hasOwnProperty(propertyName)hasOwnProperty()函数的返回值为布尔类型。如果object对象具有名为propertyName的属性,则返回true,否则返回false。varperson={姓名:“梅西”,年龄:29,职业:“足球运动员”};console.log(person.hasOwnProperty("name"));//trueconsole.log(person.hasOwnProperty("hasOwnProperty"));//falseconsole.log(Object.prototype.hasOwnProperty("hasOwnProperty"));//true之所以有原型链,是因为每个对象都有一个__proto__属性,指向对象的构造函数的原型。该对象可以通过__proto__与上游构造函数的原型对象相连,而上游原型对象也有一个__proto__,从而形成原型链。经典原型链图能否谈谈你对原型链的理解?这个问题的关键在于两点。第一个是原型对象是什么,另一个是原型链是怎么来的来自ed.prototypeobject大多数函数都有一个prototype属性,prototype属性用来通过prototype对象创建新的对象实例,所有构建的对象都会共享原型对象,让这些对象可以访问原型对象的属性。比如Object的原型对象中存在hasOwnProperty()函数,它可以作为自己的函数被任何对象使用。用法:object.hasOwnProperty(propertyName)hasOwnProperty()的返回值为布尔类型,如果对象有一个名为propertyName的属性,则返回true,否则返回false。varperson={name:"Messi",age:29,profession:"footballplayer"};console.log(person.hasOwnProperty("name"));//trueconsole.log(person.hasOwnProperty("hasOwnProperty"));//falseconsole.log(Object.prototype.hasOwnProperty("hasOwnProperty"));//真正的原型链是因为每个对象都有一个指向原型对象构造函数的__proto__属性。对象可以__proto__连接到原型对象的上游到构造函数上,原型对象有一个上游的__proto__,这样就形成了原型链。经典原型链图表
