账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    《ECMAScript 6 入门》Class的继承案例代码问题?
    56
    0

    《ECMAScript 6 入门》 #### Class的继承章节中

    原案例代码如下:

    class A {
      constructor() {
        this.x = 1;
      }
    }
    
    class B extends A {
      constructor() {
        super();
        this.x = 2;
        super.x = 3;
        console.log(super.x); // undefined
        console.log(this.x); // 3
      }
    }
    
    let b = new B();

    内容链接

    原书对这段代码的解释

    上面代码中,super.x赋值为3,这时等同于对this.x赋值为3。而当读取super.x的时候,读的是A.prototype.x,所以返回undefined。

    但实际环境测试次代码,console.log(this.x)此语句实际输出的是2,不是3.
    请问是书上描述错了,还是我理解错了?

    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一只蠢萝莉. 普通会员 1楼

      在ECMAScript 6中,Class是一种特殊的类,它包含了一个构造函数和一些静态方法。继承Class的一个重要特性,它允许你创建一个新的类,这个新的类继承了Class中的构造函数和静态方法。

      以下是一个简单的Class的继承案例代码:

      ```javascript // 定义一个基类 class Animal { constructor(name) { this.name = name; } }

      // 定义一个子类,继承自Animal class Dog extends Animal { constructor(name) { super(name); this.sound = "Woof!"; } }

      // 创建一个新的对象 const myDog = new Dog("Rex");

      // 调用Animal的构造函数 myDog.name = "Buddy";

      // 调用Dog的sound方法 console.log(myDog.sound); // 输出 "Woof!" ```

      在这个例子中,Dog类继承了Animal类的构造函数和sound属性。当你创建一个新的Dog对象时,它的name属性被设置为"Rex",这是Dog类的默认值,当你调用myDog.name时,它会输出"Rex",这是Dog类的sound属性的默认值。

      这就是Class的继承的基本概念。

    • 世浪缠身 普通会员 2楼

      在ECMAScript 6中,Class是一种特殊的类,它包含了一个构造函数和一些静态方法。继承Class的一个重要特性,它允许你创建一个新的类,这个新的类继承了Class中的构造函数和静态方法。

      以下是一个简单的Class的继承案例代码:

      ```javascript // 定义一个基类 class Animal { constructor(name) { this.name = name; } }

      // 定义一个子类,继承自Animal class Dog extends Animal { constructor(name) { super(name); this.sound = "Woof!"; } }

      // 创建一个新的对象 const myDog = new Dog("Rex");

      // 调用Animal的构造函数 myDog.name = "Buddy";

      // 调用Dog的sound方法 console.log(myDog.sound); // 输出 "Woof!" ```

      在这个例子中,Dog类继承了Animal类的构造函数和sound属性。当你创建一个新的Dog对象时,它的name属性被设置为"Rex",这是Dog类的默认值,当你调用myDog.name时,它会输出"Rex",这是Dog类的sound属性的默认值。

      这就是Class的继承的基本概念。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部