C/C++模拟实现JavaScript原型机制
为了更加深入的理解JavaScript原型机制,我们现在用伪代码来实现,或者说模拟该机制,也许我的理解有所谬误,如果果真如此,还希望不吝赐教。
一、原型机制设计
在JavaScript中,有两个祖先一样的对象:Function.prototype和 Object.prototype。
(1) Object.prototype:这个对象是所有对象的根,它自己没有爹妈,是女娲造出来的。
(2) Function.prototype:这个对象是所有构造器的根,它事实上也没爹妈,也是女娲造出来的。只不过其内部维护者Object.prototype的引用。
事实上所有对象都维护者一个{prototype}属性,这是一个内部的私有属性,无法通过对象来访问。不过在firefox等浏览器中提供了一个共有属性__proto__来访问这个私有属性。在Js中公有属性名和私有属性名可以相同。但是C/C++中不可以,我们需要做些许改变。而这个女娲分别派出了两位大使MetaObject 和 MetaConstructor,这是C/C++中的类。他们分别负责产生Object.prototype和Function.prototype,(采用单体模式);