js的对象继承问题

function main(){
    var _this = {};
    _this.say = function(){
        alert('haha');
    }
    _this.name = 'lucy';
    return _this;
}
function extand(){
    var _this = main();
    return _this;
}
var p = extand();
p.say();

最后一行,请问为什么p.say这样写就不行了,调用别的什么属性不都是直接用就行了吗,比如调用名字p.name就可以输出lucy了

阅读 2.3k
3 个回答

你可以alert一下p.say()和p.say。
前者相当于是一个执行语句,它会执行p.say这个function,而后者只会获得这个function的声明。

因为你说的p.name的name是个基本类型值,而say是函数,属于引用类型值。

楼上正解, p.say 是个 function(){} 啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题