Javascript的4种继承方法
虽然Javascript没有给出继承的关键字,但是我们仍然可以采取一些好的方法来实现它。1。原型链继承:
复制代码代码如下所示:
var =函数()
{
this.level = 1;
this.name =基地;
this.tostring =函数(){
返回基;
};
};
base.constant =常数;
var =函数()
{
};
sub.prototype =新基地();
Sub.prototype.name = sub;
优势:从instanceof关键字,一个实例是实例父类和子类,一个似乎是最纯粹的继承的实例。
缺点:子类,不同于父类的属性和方法必须在sub.prototype =新基地进行();在这样的陈述是分开进行的,它们不能被包装成子构造函数。例如,sub.prototype.name =子;多重继承无法实现。
2。继承建设:
复制代码代码如下所示:
var =函数()
{
this.level = 1;
this.name =基地;
this.tostring =函数(){
返回基;
};
};
base.constant =常数;
var =函数()
{
base.call(本);
this.name =子;
};
优点:它可以实现多重继承,可以处理构造函数中特定于属性的设置。
缺点:使用实例,对象不是父类的一个实例。
三.例如继承:
复制代码代码如下所示:
var =函数()
{
this.level = 1;
this.name =基地;
this.tostring =函数(){
返回基;
};
};
base.constant =常数;
var =函数()
{
var实例=新的基();
instance.name =子;
返回实例;
};
优点:它是父类的对象,通过使用新构造对象而不使用新构造对象,可以得到相同的效果。
缺点:生成的对象本质上是父类的实例,而不是子类的对象;它不支持多重继承。
4。复制继承:
复制代码代码如下所示:
var =函数()
{
this.level = 1;
this.name =基地;
this.tostring =函数(){
返回基;
};
};
base.constant =常数;
VaR子=功能()
{
var基础=新基();
为(var I在基)
我sub.prototype { } =基{我};
sub.prototype {名字=子;
};
优点:支持多重继承。
缺点:效率低;无法得到父类的不可数的方法。
这些表单中的每一个都有其自身的特性,并且仅根据我提供的代码来满足以下形式:
2012-1-10:补充,如果我们不需要类的继承,我们只需要继承。我们可以用object.create实现浏览器支持ECMAscript 5。
复制代码代码如下所示:
var =函数()
{
this.level = 1;
this.name =基地;
this.tostring =函数(){
返回基;
};
};
base.constant =常数;
VaR子= object.create(新基地());
sub.name =子;