javaScript属性和方法同在构造函数中(包含继承)
2016-05-27 11:23
501 查看
将所有属性和方法使用this声明,并放在构造函数中,不使用prototype.
例子:
function Animal(name) {
this.name = name;
this.run = function() {
alert("running "+this.name)
};
}
var animal = new Animal('Foxie');
animal.run();
此类型的继承:
1、使用apply或call调用父类构造函数获得父类的属性和方法
2、在子类中添加新的属性和方法
栗子:
function Rabbit(name) {
Animal.apply(this, arguments); // inherit
this.bounce = function() {
alert("bouncing "+this.name);
}
}
rabbit = new Rabbit("Rab");
rabbit.bounce(); // own method
rabbit.run(); // inherited method
此种继承没有使用prototype意味着子类和父类的方法均独立在自己的对象中,没有共用的属性或方法。也就是没有达到方法的复用,子类和父类可能有着功能完全相同的方法。但是在这种模式中也有自己的有点,它支持private属性。
使用var在构造函数里边声明定义的属性和方法就是private类型,他的访问速度是非常快的。在构造函数的外部无法访问。
protected类型的属性同样使用命名规范'_'约束,并不是强制性的。
子类中的重写只需使用this.methidName即可。重写之前可将父类方法寄存,以便后续调用。
因为没有使用prototype所以rabbit instanceof Animal 在这里是不奏效的。
例子:
function Animal(name) {
this.name = name;
this.run = function() {
alert("running "+this.name)
};
}
var animal = new Animal('Foxie');
animal.run();
此类型的继承:
1、使用apply或call调用父类构造函数获得父类的属性和方法
2、在子类中添加新的属性和方法
栗子:
function Rabbit(name) {
Animal.apply(this, arguments); // inherit
this.bounce = function() {
alert("bouncing "+this.name);
}
}
rabbit = new Rabbit("Rab");
rabbit.bounce(); // own method
rabbit.run(); // inherited method
此种继承没有使用prototype意味着子类和父类的方法均独立在自己的对象中,没有共用的属性或方法。也就是没有达到方法的复用,子类和父类可能有着功能完全相同的方法。但是在这种模式中也有自己的有点,它支持private属性。
使用var在构造函数里边声明定义的属性和方法就是private类型,他的访问速度是非常快的。在构造函数的外部无法访问。
protected类型的属性同样使用命名规范'_'约束,并不是强制性的。
子类中的重写只需使用this.methidName即可。重写之前可将父类方法寄存,以便后续调用。
因为没有使用prototype所以rabbit instanceof Animal 在这里是不奏效的。
相关文章推荐
- prototype Element学习笔记(篇一)
- Prototype 学习 工具函数学习($方法)
- Prototype使用指南之selector.js说明
- prototype1.4中文手册
- prototype 1.5相关知识及他人笔记
- prototype Element学习笔记(Element篇三)
- PostgreSQL教程(三):表的继承和分区表详解
- prototype Element学习笔记(篇二)
- Lua面向对象之类和继承浅析
- 浅析Ruby中继承和消息的相关知识
- prototype 的说明 js类
- Prototype 学习 工具函数学习($A方法)
- Prototype源码浅析 String部分(三)之HTML字符串处理
- javascript prototype,executing,context,closure
- prototype 1.5 & scriptaculous 1.6.1 学习笔记
- prototype 学习笔记整理
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- C++实现不能被继承的类实例分析
- C# 面向对象三大特性:封装、继承、多态
- PHP类的封装与继承详解