加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 教程 > 正文

深入理解JavaScript是如何成功实现继承的

发布时间:2023-08-24 14:23:45 所属栏目:教程 来源:
导读:最近网上看了一个人面试淘宝时的经历,然后发现了自己有好多好多不太清楚的地方,所以特此写点文章来加深自己对一些问题的理解。

文章中提到了一个问题是:JavaScript是如何实现继承的?

下面我便阐述一些在
最近网上看了一个人面试淘宝时的经历,然后发现了自己有好多好多不太清楚的地方,所以特此写点文章来加深自己对一些问题的理解。
 
文章中提到了一个问题是:JavaScript是如何实现继承的?
 
下面我便阐述一些在网上找到的方法和实例来解释下,借以加深自己的印象。
 
我们知道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类;于是便实现了类的继承。
 
模拟JavaScript中类和继承的一些原理
 
在面向对象的语言中,我们使用类来创建一个自定义对象。然而JavaScript中所有事物都是对象,那么用什么办法来创建自定义对象呢?
 
这就需要引入另外一个概念 - 原型(prototype),我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉好像是拷贝)。
 
让我们看一下通过prototype创建自定义对象的一个例子:
 
代码如下:
 
// 构造函数
 
  function Person(name, sex) {
 
      this.name = name;
 
      this.sex = sex;
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章