javascript - 返回的是true还是false呢?为啥呢?
大家讲道理
大家讲道理 2017-04-11 12:25:37
[JavaScript讨论组]

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
黄舟
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

天蓬老师

楼主最好贴出代码,方便对你作出回答的人调试代码,对人对己都有利,你不可能让大家都对着图片重打一遍你的代码,是吧?

补充: 因为你在代码里面只有一个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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号