1. <legend id='dxp15'><style id='dxp15'><dir id='dxp15'><q id='dxp15'></q></dir></style></legend>
      • <bdo id='dxp15'></bdo><ul id='dxp15'></ul>
      <i id='dxp15'><tr id='dxp15'><dt id='dxp15'><q id='dxp15'><span id='dxp15'><b id='dxp15'><form id='dxp15'><ins id='dxp15'></ins><ul id='dxp15'></ul><sub id='dxp15'></sub></form><legend id='dxp15'></legend><bdo id='dxp15'><pre id='dxp15'><center id='dxp15'></center></pre></bdo></b><th id='dxp15'></th></span></q></dt></tr></i><div id='dxp15'><tfoot id='dxp15'></tfoot><dl id='dxp15'><fieldset id='dxp15'></fieldset></dl></div>

      <small id='dxp15'></small><noframes id='dxp15'>

    2. <tfoot id='dxp15'></tfoot>
    3. 深入浅析javascript继承体系

      在JavaScript中,继承是指一个对象获得另一个对象的属性和方法。这种被继承的对象称为父类或基类,继承它的对象称为子类或派生类。继承是面向对象编程中最基本的概念之一,也是JavaScript中的重要概念。
        <tbody id='4WPXI'></tbody>
          <i id='4WPXI'><tr id='4WPXI'><dt id='4WPXI'><q id='4WPXI'><span id='4WPXI'><b id='4WPXI'><form id='4WPXI'><ins id='4WPXI'></ins><ul id='4WPXI'></ul><sub id='4WPXI'></sub></form><legend id='4WPXI'></legend><bdo id='4WPXI'><pre id='4WPXI'><center id='4WPXI'></center></pre></bdo></b><th id='4WPXI'></th></span></q></dt></tr></i><div id='4WPXI'><tfoot id='4WPXI'></tfoot><dl id='4WPXI'><fieldset id='4WPXI'></fieldset></dl></div>
          <legend id='4WPXI'><style id='4WPXI'><dir id='4WPXI'><q id='4WPXI'></q></dir></style></legend>
            <bdo id='4WPXI'></bdo><ul id='4WPXI'></ul>
            • <small id='4WPXI'></small><noframes id='4WPXI'>

              <tfoot id='4WPXI'></tfoot>

              • 深入浅析JavaScript继承体系

                1. 继承的概念

                在JavaScript中,继承是指一个对象获得另一个对象的属性和方法。这种被继承的对象称为父类或基类,继承它的对象称为子类或派生类。继承是面向对象编程中最基本的概念之一,也是JavaScript中的重要概念。

                2. 继承的实现方式

                在JavaScript中,实现继承有多种方式,常见的包括原型链继承、构造函数继承、组合继承、寄生组合继承等。

                2.1 原型链继承

                原型链继承是指将父类的实例作为子类的原型。示例代码如下:

                function Parent() {
                  this.name = 'parent';
                  this.age = 30;
                }
                
                Parent.prototype.sayHello = function() {
                  console.log(`Hello, I'm ${this.name}.`);
                }
                
                function Child() {}
                
                Child.prototype = new Parent();
                
                var child = new Child();
                
                console.log(child.name); // parent
                console.log(child.age); // 30
                
                child.sayHello(); // Hello, I'm undefined.
                

                原型链继承的优点是简单、易于理解和实现,缺点是没法给父类构造函数传参,且由于所有子类对象共享父类原型对象的属性和方法,可能导致意外的修改。

                2.2 构造函数继承

                构造函数继承是指在子类的构造函数中调用父类的构造函数,并通过call或apply方法改变父类构造函数中this的引用。示例代码如下:

                function Parent(name, age) {
                  this.name = name;
                  this.age = age;
                }
                
                Parent.prototype.sayHello = function() {
                  console.log(`Hello, I'm ${this.name}.`);
                }
                
                function Child(name, age) {
                  Parent.call(this, name, age);
                }
                
                var child = new Child('child', 10);
                
                console.log(child.name); // child
                console.log(child.age); // 10
                
                child.sayHello(); // TypeError: child.sayHello is not a function
                

                构造函数继承的优点是可以给父类构造函数传参,可以避免意外的修改,缺点是无法直接继承父类原型对象中的属性和方法。

                2.3 组合继承

                组合继承是指通过原型链继承和构造函数继承两种方式结合的一种继承方式。示例代码如下:

                function Parent(name, age) {
                  this.name = name;
                  this.age = age;
                }
                
                Parent.prototype.sayHello = function() {
                  console.log(`Hello, I'm ${this.name}.`);
                }
                
                function Child(name, age) {
                  Parent.call(this, name, age);
                }
                
                Child.prototype = new Parent();
                
                var child = new Child('child', 10);
                
                console.log(child.name); // child
                console.log(child.age); // 10
                
                child.sayHello(); // Hello, I'm child.
                

                组合继承的优点是综合了原型链继承和构造函数继承的优点,可以继承父类的属性和方法,可以给父类构造函数传参,避免了意外的修改。

                2.4 寄生组合继承

                寄生组合继承是对组合继承的一种优化,其核心是通过Object.create方法创建一个中间对象,使其作为子类原型对象,可以避免调用父类构造函数时产生的副作用。示例代码如下:

                function Parent(name, age) {
                  this.name = name;
                  this.age = age;
                }
                
                Parent.prototype.sayHello = function() {
                  console.log(`Hello, I'm ${this.name}.`);
                }
                
                function Child(name, age) {
                  Parent.call(this, name, age);
                }
                
                var F = function() {};
                F.prototype = Parent.prototype;
                Child.prototype = new F();
                Child.prototype.constructor = Child;
                
                var child = new Child('child', 10);
                
                console.log(child.name); // child
                console.log(child.age); // 10
                
                child.sayHello(); // Hello, I'm child.
                

                寄生组合继承的优点是继承了父类的属性和方法,可以给父类构造函数传参,避免了意外的修改,在原型链上只存在一个中间对象,保证了代码的性能。

                3. 结语

                以上是JavaScript中常见的继承方式,每种方式都有其优缺点,根据实际需求选择适合的方式。在实际应用中,也有更复杂的继承方式,例如ES6中引入的class关键字,可以更方便地实现继承。

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                treetable.js没有checked做联动。于是自己基于treetable开发的一个小功能,希望能和大家一起交流一下。 1. 在当前HTML文档checked监听函数中增加以下代码 //联动 table.on('checkbox(quan_list)', function(obj){ //console.log(obj); //当前id var id = obj.
                当使用Javascript的attachEvent来绑定事件时,我们希望能够给事件处理函数传递一些参数,但是attachEvent本身并不支持传递参数。下面介绍两种解决方法。
                KnockoutJS是一款流行的JavaScript库,针对一个web应用程序的建立提供了比较好的基础架构。其中,表单的数据绑定功能是KnockoutJS最为常用的功能之一。本文将详细讲解KnockoutJS 3.x
                下面是用javascript实现改善用户体验之alert提示效果的完整攻略。
                在学习JavaScript编写贪吃蛇游戏之前,需要掌握以下的前置知识:
                  <tbody id='jXYzr'></tbody>
                1. <legend id='jXYzr'><style id='jXYzr'><dir id='jXYzr'><q id='jXYzr'></q></dir></style></legend>

                  <i id='jXYzr'><tr id='jXYzr'><dt id='jXYzr'><q id='jXYzr'><span id='jXYzr'><b id='jXYzr'><form id='jXYzr'><ins id='jXYzr'></ins><ul id='jXYzr'></ul><sub id='jXYzr'></sub></form><legend id='jXYzr'></legend><bdo id='jXYzr'><pre id='jXYzr'><center id='jXYzr'></center></pre></bdo></b><th id='jXYzr'></th></span></q></dt></tr></i><div id='jXYzr'><tfoot id='jXYzr'></tfoot><dl id='jXYzr'><fieldset id='jXYzr'></fieldset></dl></div>

                  <small id='jXYzr'></small><noframes id='jXYzr'>

                  <tfoot id='jXYzr'></tfoot>

                        <bdo id='jXYzr'></bdo><ul id='jXYzr'></ul>