Javascript js中原型的详细研究

Javascript js中原型的详细研究,javascript,prototype,Javascript,Prototype,考虑以下代码: //for extend classes function extend(subClass,superClass){ var F=function(){}; F.prototype=superClass.prototype; subClass.prototype=new F(); subClass.prototype.constructor=subClass; } //basic sender object function Sender(){} Sender.p

考虑以下代码:

//for extend classes
function extend(subClass,superClass){
  var F=function(){};
  F.prototype=superClass.prototype;
  subClass.prototype=new F();
  subClass.prototype.constructor=subClass;
}
//basic sender object
function Sender(){}
Sender.prototype = {
  ...
};
//interface
//extend method 1:
function BackendAdmin(){}
BackendAdmin.prototype.Sender = function(){};
extend(BackendAdmin.Sender,Sender); //will generate prototype of undefined error
//extend method 2:
function BackendAdmin(){
  this.Sender = function(){};
  extend(this.Sender,Sender);// Seems can not be extended
}
// instance
var myadmin=new BackendAdmin();
myadmin.Sender.StartLoading(); // do not have method for method 2.
在这种情况下,我想在BackendAdmin中创建一个sender实例,它包含基本sender类的方法,如果需要,我还需要在BackendAdmin中重写sender的方法。但是,这两种情况下似乎都不起作用,除非我使用类似的方法:

this.sender = new Sender();

如何使用扩展函数?

对Propotype没有任何影响,但它已经很旧了……哦,糟糕,我刚刚看到了
prototypejs
标记。是一个旧的JS库,但您的意思似乎是
prototype
,我编辑了您的标记。@elclans我明白了。是的,我指的是原型,不是prototype.js。谢谢你,埃尔克兰斯。你对这个问题有什么想法吗?目前你掌握了多种技巧;代码的一部分表示希望继承,另一部分表示希望在BackendAdmin实例中使用Sender对象。是哪一个?@ChrisMorgan我希望backendadmin中的sender对象继承基本sender对象,即函数sender(){…}