论坛首页 Web前端技术论坛

对于new,prototype,constructor的理解

浏览 3232 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-03-19  
每个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
   发表时间:2008-03-19  
建议你去看看ecma262关于这段的描述,会更加清晰
0 请登录后投票
   发表时间:2008-03-19  
"function对象是没有的",原型继承是不区分对象的,function是对象,自然有原型继承,继承的就是Function.prototype和Object.prototype
"constructor"不可靠,只不过是原型继承构造函数原型属性引用,但是原型属性"constructor"引用不可靠,所以不能说的太绝对
0 请登录后投票
   发表时间:2008-03-20  
谢谢,看来我的理解有点误差
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics