javascript - Kekeliruan tentang kelas dan super dalam ES6
黄舟
黄舟 2017-05-19 10:31:04
0
2
739
class Book{
            constructor(book1,book2) {
                this.book1 = book1;
                this.book2 = book2;
            }
            getName() {
                alert(this.book1+this.book2)
            }
        }
        class book extends Book{
            constructor() {
                super(book1,book2);
            }
            toSay() {
                super.getName();
            }
        }
        var cp = new book("javascript guide","javascript best pattern");

Selepas menonton tutorial ES6 Ruan Yifeng, saya masih keliru tentang kelas dan super Mula-mula buat kelas Buku
Kemudian buat buku subkelas untuk mewarisi Buku kelas induk, super memanggil pembina kelas induk dan memanggil kelas induk. getName dalam kaedah toSay (), penyemak imbas melaporkan ralat

Berikut ialah contoh Ruan Yifeng tentang kelas Struktur kod hanya mentakrifkan atribut warna pada subkelas lebih daripada saya Jika subkelas saya tidak memerlukan atributnya sendiri, bolehkah saya memanggil sepenuhnya atribut dan kaedah kelas induk.

class Point {
          constructor(x, y) {
            this.x = x;
            this.y = y;
          }

          toString() {
            return '(' + this.x + ', ' + this.y + ')';
          }
     }
         class ColorPoint extends Point {
              constructor(x, y, color) {
                super(x, y); // 调用父类的constructor(x, y)
                this.color = color;
              }

              toString() {
                return this.color + ' ' + super.toString(); // 调用父类的toString()
              }
        }

Ada keraguan lagi
Guru Ruan berkata bahawa super() mesti ditakrifkan dalam subkelas


Tetapi kod saya tidak mempunyai super, penyemak imbas melaksanakannya


Maaf, kenapa ni?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(2)
世界只因有你

Ya, buku kanak-kanak tidak melepasi parameter

        class book extends Book{
            constructor(book1, book2) {
                super(book1, book2);
            }
            toSay() {
                super.getName();
            }
        }
左手右手慢动作

Jawapan betul di tingkat atas.
Seperti kata cikgu Ruan Yifeng:

  • Dalam kes pertama, apabila super dipanggil sebagai fungsi, ia mewakili pembina kelas induk.

  • Dalam kes kedua, apabila super digunakan sebagai objek, dalam kaedah biasa, ia menunjuk ke objek prototaip kelas induk;

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan