javascript什么是继承

JavaScript030

javascript什么是继承,第1张

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什么的,不然一个几千行代码的框架不用继承得写几万行,甚至还无法维护