扫码关注官方订阅号
光阴似箭催人老,日月如移越少年。
function SuperType(){ this.property = true; } SuperType.prototype.getSuperValue = function(){ console.log(this); return this.property; } function SubType(){ this.property = false; } SubType.prototype = new SuperType(); var instance = new SubType(); console.log(instance.getSuperValue());
楼主应该是想做这样吧,new SubType()之后,instance有属性property,原型链上有属性property和方法getSuperValue。
在调用方法和属性是一层一层往上找,所以自然是false,如果按楼主所展示的,那肯定是true。
返回true实例instance只有一个实例属性,即subProperty。当运行那个方法时在实例中找不到property,就会到原型中查找,找到了,值为true
true
楼主最好贴出代码,方便对你作出回答的人调试代码,对人对己都有利,你不可能让大家都对着图片重打一遍你的代码,是吧?
补充: 因为你在代码里面只有一个property,对于新手来讲,不足以造成疑惑,个人感觉,我猜楼主想要搞清楚如下代码的输出:
function superT () { this.p = true } superT.prototype.getP = function(){ return this.p } function subT() { this.p = false } subT.prototype = new superT() var ins = new subT() console.log(ins.getP())
这边输出的是false,而你的代码输出的是true等待楼主对我的疑问进行确认
怎么 看 都 不可能是 false 吧先不说 原型链 的 问题就拿 getSuperValue 方法 里面 this.property 和 函数 SubType 里面的 this.subProperty 前者 是 访问 当前 调用 对象 的 property 属性 后者 是 设置 当前调用对象 subProperty 属性 两个 属性 名 都 不一样如果 属性 名 一样 的 话 那 输出 就是 false
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
楼主应该是想做这样吧,new SubType()之后,instance有属性property,原型链上有属性property和方法getSuperValue。

在调用方法和属性是一层一层往上找,所以自然是false,如果按楼主所展示的,那肯定是true。
返回
true实例instance只有一个实例属性,即subProperty。当运行那个方法时在实例中找不到property,就会到原型中查找,找到了,值为true
楼主最好贴出代码,方便对你作出回答的人调试代码,对人对己都有利,你不可能让大家都对着图片重打一遍你的代码,是吧?
补充: 因为你在代码里面只有一个property,对于新手来讲,不足以造成疑惑,个人感觉,我猜楼主想要搞清楚如下代码的输出:
这边输出的是false,而你的代码输出的是true
等待楼主对我的疑问进行确认
怎么 看 都 不可能是 false 吧
先不说 原型链 的 问题
就拿 getSuperValue 方法 里面 this.property 和 函数 SubType 里面的 this.subProperty 前者 是 访问 当前 调用 对象 的 property 属性 后者 是 设置 当前调用对象 subProperty 属性 两个 属性 名 都 不一样
如果 属性 名 一样 的 话 那 输出 就是 false