读书人

Javascript 对象是怎么获取原型的属性

发布时间: 2012-03-03 15:33:03 作者: rapoo

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

读书人网 >JavaScript

热点推荐