JavaScript中的function是万能的,除了用于的函数定义,也可以用于类的定义。
JavaScript的继承,说起来也是有点怪,不像C++和一些面向对象的语言,他没有public,private等访问控制修饰,也没有implement或其他特定的符号来说明是实现继承。
关于javascript类的继承可以参考一下下面的这个例子。
<script type="text/javascript">function Person() {
// 属性
this.Gender = "female"
this.Age = 18
this.Words = "Silence"
// 方法
this.shouting = function() {
alert("开心哦!父类的方法")
}
}
// 继承
function Programmer() {
this.base = Person
}
Programmer.prototype = new Person
// 为子类添加新的方法
Programmer.prototype.typeCode = function() {
alert("俺是敲代码的!IT民工,很不开心。子类的方法")
}
// 调用示例
function sayHello() {
var a = new Programmer()
alert(a.Gender) // 调用父类的属性
a.shouting() // 调用父类的方法
a.typeCode() // 调用子类的方法
}
sayHello()
</script>
上例中,首先是声明一个person类,里面包含了一些属性和方法,然后接着又声明了一个programmer类,其中有个base属性,这个属性并不是
必需的,但是出于规范以及以后在查找对象所继承的类时都需要写上,然后是给programmer的原型对象(prototype)拷贝了person类;
于是便实现了类的继承。
参考资料:http://www.jb51.net/article/44384.htm
js中继承跟java中的继承不太一样,一般通过call()和apply()两种方式完成,js中的继承是以复制的形式完成的,复制一个父对象,而不像java中直接继承父对象,还有通过原型的方式完成继承,也有弊端,总之js中的继承只是形式上的对面向对象语言的一种模仿,本质上不是继承,但用起来效果是一样的至于为什么要继承:通常在一般的项目里不需要,因为应用简单,但你要用纯js做一些复杂的工具或框架系统就要用到了,比如webgis、或者js框架如jquery、ext什么的,不然一个几千行代码的框架不用继承得写几万行,甚至还无法维护