Function.prototype.extends = function(obj){ for(var each in obj) { this.prototype[each] = obj[each]; //对对象的属性进行一对一的复制,但是它又慢又容易引起问题//所以这种“继承”方式一般不推荐使用 }}var Point2D = function(){ ……}Point2D.extends(new Point()){ ……}
apply不会应用对象prototype新增的方法或属性.
你把function B()改为 function B(){A.call(this);} 使用call来继承A,就可以正常输出8了
这里10楼主说,apply 不继承,call继承。请 读下它的回复,好吗
var o = function(ppt){
this.ppt = ppt;
};
o.prototype.ptt = 'prototype[ptt]';var o2 = function(ppt){
o.call(this,ppt);
};var o3 = function(){
var arr = Array.prototype.slice.call(arguments,0);
o.apply(this,arr);
};var a = new o('a');
var b = new o2('b');
var c = new o3('c');alert(a.ppt+'\n'+a.ptt);
alert(b.ppt+'\n'+b.ptt);
alert(c.ppt+'\n'+c.ptt);</script>
拜读,消化。明白了。