每个object对象都有一个内在的原形属性(暂且称为_inner),
function对象是没有的,只是function的prototype属性很特殊

var A=function(name){this.name=name};
var obj=new A("xx");
1.先执行A,把里面的this用obj代替
2.把_inner引用指向A的prototype属性所指的地方

obj的constructor其实引用的是_inner的constructor
new对象后,如果A的prototype指向其他对象,obj的_inner是不会改变的

obj.xx 会先访问obj的xx属性,如果没有会再访问obj的_inner的xx,
同样_inner是object的话,会继续访问_inner的_inner
评论
xfan1982 2008-03-20
谢谢,看来我的理解有点误差
afcn0 2008-03-19
"function对象是没有的",原型继承是不区分对象的,function是对象,自然有原型继承,继承的就是Function.prototype和Object.prototype
"constructor"不可靠,只不过是原型继承构造函数原型属性引用,但是原型属性"constructor"引用不可靠,所以不能说的太绝对
ajaxgo 2008-03-19
建议你去看看ecma262关于这段的描述,会更加清晰
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

xfan1982
搜索本博客
最近加入圈子
存档
最新评论