猿问

关于javascript原型的一个小问题

如题,创建一个People构造函数

当用第二种方式给原型添加属性时,实例化james对象后,没法访问构造器函数上的原型属性,为undefined。但是用第一种方式书写,就可以访问,得到203。

请问各位,这是一个什么原因呀,是写法不对嘛,写法不对的话,用第二种方式写的时候,还是可以访问其run方法的呀,还是其它什么问题?求指教,谢谢!


偶然的你
浏览 555回答 1
1回答

慕田峪4524236

第一种方式,你设置的是People原型的属性,所以console.log(james.constructor.prototype.height),这里james.constructor指向的是People对象,原因是默认情况下,constructor:People而第二种方式,你是新定义了People的原型对象,原型对象的constructor方法已经丢失了,这时james.constructor指向的是function Object()(新定义对象的constructor:Object),所以james.constructor.prototype指向的是Object(),所以james.constructor.prototype.height就是undefined(因为确实没有定义),而直接james.height直接调用的是james原型对象的属性,所以是没有问题的。 以上是我的理解,希望能帮到你
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答