2008-03-19
对于new,prototype,constructor的理解
每个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
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"引用不可靠,所以不能说的太绝对
"constructor"不可靠,只不过是原型继承构造函数原型属性引用,但是原型属性"constructor"引用不可靠,所以不能说的太绝对
ajaxgo
2008-03-19
建议你去看看ecma262关于这段的描述,会更加清晰
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 1062 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
[Freemarker]空值处理最简 ...
freemark现在有3.8版本吗?现在才是2.3
-- by mmt -
[Freemarker]空值处理最简 ...
不是很清楚
-- by gaojy2008 -
[Freemarker]空值处理最简 ...
整个嵌套感觉有点不妥啊
-- by darkjune -
对于new,prototype,constr ...
谢谢,看来我的理解有点误差
-- by xfan1982 -
对于new,prototype,constr ...
"function对象是没有的",原型继承是不区分对象的,function是对象 ...
-- by afcn0






评论排行榜