[讨论]prototype的成员叠加。。。。。
<script type= "text/javascript ">
Function.prototype.toString = function () {
return '咱家FUNCTION ';
};
Object.prototype.toString = function () {
return '咱家OBJECT '
};
alert({}); // Object.prototype.toString
alert(function () {}); // Function.prototype.toString
alert(Object); // Function.prototype.toString ;这里不要混淆,Object是函数对象的说。。。
delete Function.prototype.toString; //去掉函数的toString方法
alert( "kill Function.prototype.toString ");
alert({}); // Object.prototype.toString //没影响Object.prototype.toString所以原值
alert(function () {}); /*
Function.prototype.toString 被kill了,所以返回的是Object.prototype.toString
因为函数是对象的一种,可以理解成对象的子类所以它自然继承Object.prototype.toString
下面会有单独的CODE来表现这种形式
*/
alert(Object); // 同理
alert( "kill Object.prototype.toString ");
delete Object.prototype.toString; //去掉对象的toString方法
alert({}); /*
Object.prototype.toString被kill了所以自然就调用了系统默认的toString方法即window之类的所有的东西的toString方法
可以理解成Object的实例继承了默认的系统toString,然后又继承了Object.prototype.toString
然而函数则继承了3层的toString
即顺序是:
系统的toString
Object的toString
Function的toString
*/
alert(function () {}); // 同理
alert(Object); // 同理
/***************类表示层叠方法的形式****************/
alert( "类表示层叠方法的形式 ");
var wc_1 = new Function();
wc_1.prototype = {
value : "wc_1 "
};
var wc_2 = new Function();
wc_2.prototype = new wc_1;
wc_2.prototype.value = "wc_2 ";
var wc_3 = new Function();
wc_3.prototype = new wc_2;
wc_3.prototype.value = "wc_3 ";
/*
注意:我理解的话这里原型实例化后它的所有成员指向的内容为只读,所以如果你修改的话,
就会新加一个成员指向新的方法这样的图
原型成员 --------------- xxx 只读
|
|
实例成员 -------------------
实例成员 --------------- yyy 读/写
然后调用的在修改的话,发现那个可以写了,所以就不用在创建新的成员了。。。直接修改后面那个属性。
然后所有的访问都是操作后面的。。
测试了若干次。。目前我是这么理解。。。欢迎大家继续讨论
*/
var wc = new wc_3, i;
alert(wc.value === wc_3.prototype.value);
delete wc.value;
alert(wc.value);
delete wc_3.prototype.value;
alert(wc.value);
delete wc_2.prototype.value;
alert(wc.value);
</script>
------解决方案--------------------路过....
------解决方案--------------------踩上一脚,下班回家.
wc同学多多补充营养,别太伤脑筋了哈.
------解决方案--------------------prototype这个东西还不是很懂,先踩一脚.
------解决方案--------------------踩一脚
------解决方案--------------------