原型对象中的this仍然指向实例对象,而非原型对象

执行以下程序,输出结果为()

function Person(age){ this.age = age; } Person.prototype = { constructor:Person, getAge:function(){ console.log(this.age); }, } var ldh = new Person(24); Person.prototype.age = 18; Object.prototype.age = 20; ldh.getAge();

24

对象在调用方法和属性时依靠原型链的顺序进行查找,先从自身查找,然后是构造函数的原型对象,接着是Object的原型对象,一旦找到时停止查找,找不到则返回undefined。
同时,原型对象中的this仍然指向实例对象,而非原型对象,
在本题中,实例对象先调用原型对象的getAge()方法,然后输出age属性值,由于该实例对象已经有age属性,同时其原型链中,原型对象和原型对象的原型对象即Object对象均有age属性,依据上述查找规则,最终输出结果为实例对象的age,即为24。

function Person(age) { this.age = age; } Person.prototype = { constructor: Person, getAge: function () { console.log(this.age); }, } var ldh = new Person(24); //ldh = { age: 24 } Person.prototype.age = 18; // Person.prototype = { // age: 18 , // getAge: function () { // console.log(this.age); // }, //} Object.prototype.age = 20; // Object.prototype = { age: 20 } ldh.getAge(); //ldh这个对象上没有getAge方法,就去构造函数的原型上找 //继承构造函数的原型上的getAge这个方法,this指向的是实例化对象ldh

__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17825414.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示