Javascript 对象是如何获取原型的属性方法的?
function ClassA(){ }
ClassA.prototype.flag = "A ";
function ClassB(){ }
function run()
{
var a = new ClassA();
alert(a.flag);
alert(a.prototype);
alert(a.constructor);
a.constructor = ClassB;
alert(a.prototype);
alert(a.constructor);
alert(a.flag);
}
上面这段代码的执行结果是:
undefined
function ClassA(){ }
undefined
function ClassB(){ }
A
显然,对象a不是动过prototype属性(因为不存在undefined)和constructor属性(改变后a依然可以找到falg)来查早prototype对象的。所以非常奇怪a如何找flag的呢?
------解决方案--------------------个人认为可能是a对象没有重新被构造,所以除了你改了的属性其他的都没有变。想来可能是js里把constructor做为一个对象的普通属性来看待的。
------解决方案--------------------prototype 是游离于ClassA对象之外的一个扩展
你把 a.constractor 改成 ClassB 只是把这个类的结构体变了,而没有改 prototype