举个例子~~~~ function aa() { } aa.prototype.showaa = function(){ alert('aa'); } function bb(){ }bb.prototype = aa.prototype; // bb 类继承自aa类bb.prototype.showbb = function(){ alert('bb'); } var b = new bb(); b.showaa(); var a = new aa(); a.showbb();bb 类 继承自 aa类 他们共用一个prototype,所以派生类中对prototype 的改变,基类也一样会改变。
<!--
Object.lookMe = function() {
alert("@_@ Object");}
Object.prototype.showMeOnObj = function() {
alert("showMeOnObj");}Function.lookMe = function() {
alert("@_@ Function");}
Function.prototype.showMeOnFun = function() {
alert("showMeOnFun");}for (var o in Object) {
Object[o]();
}
// showMeOnFun —— 问题:为什么遍历 Object 的原型时,却可以遍历到 Function 原型上的方法?
// showMeOnObj
// @_@ Object
//-->
</script>
而第 3 点有点儿问题,俺的问题就是一个例证。现在问题基本明确了,应该就出在原型上!希望能有高人再指点一下,谢谢!今晚来结贴!
alert(typeof Object);得出一个更有意思的答案
只能说明,Object也是Function的一个派生类你对Function原型里的一些修改,也被Object继承了
alert(typeof Object);的结果不奇怪,因为 Function 和 Object 都是构造函数,类型当然是 function ,不信你看:alert(Object);
alert(Function);// 输出
function Object() {
[native code]
}function Function() {
[native code]
}
Object.lookMe = function() {
alert("@_@ Object");
};Object.prototype.showMe = function() {
alert("Object");
};Function.lookMe = function() {
alert("@_@ Function");
};
Function.prototype.showMe = function() {
alert("Function");
};for (var o in Function) {
Function[o]();
}for (var o in Object) {
Object[o]();
}
//第二个这里Object为函数处理所以它继承了Function的showMe方法,
//如果你new 下就是对象了(new Object)。这样就继承了Object的showMe方法。。
//第一个,只不过是给Function函数加了个成员,并且它是函数,所以自然也继承Function的showMe方法。
//如果你new 下也不会继承Object的showMe方法因为这个Function函数比较另类 - -。
</script>
我弄反了,应该是Funciton类是派生自Object类的
Funciton类和Object类应该是共用一个prototype吧
我记得看过一种讲javascript里的类型派生的方式,就是直接把派生类的prototype = 基类的potoype。
javascript毕竟只是一种脚本语言……
Object.prototype.showMe = function() {
alert("Object");
};
也被Function继承了,但是。又被。
Function.prototype.showMe = function() {
alert("Function");
};
给盖了。。
飘走的说。
function aa()
{
}
aa.prototype.showaa = function(){
alert('aa');
}
function bb(){
}bb.prototype = aa.prototype; // bb 类继承自aa类bb.prototype.showbb = function(){
alert('bb');
}
var b = new bb();
b.showaa();
var a = new aa();
a.showbb();bb 类 继承自 aa类
他们共用一个prototype,所以派生类中对prototype 的改变,基类也一样会改变。