javascript avanzado (1)

Orientado a procesos y orientado al pensamiento

Orientado al proceso

Orientado a procesos es analizar los pasos necesarios para encontrar el problema y luego usar funciones para implementar estos pasos uno por uno, y luego llamarlos uno por uno cuando los use.

Orientado a la mente

Orientado al proceso es la división de asuntos en objetos y la división del trabajo y la cooperación entre objetos.
Inserte la descripción de la imagen aquí

Características orientadas al pensamiento

  • Extraer los atributos y comportamientos comunes del objeto y encapsularlos en una clase (plantilla)
  • Crea una instancia de la clase y obtén el objeto de la clase

Un objeto es una colección desordenada de propiedades y métodos relacionados, y todas las cosas pueden ser un objeto. Por ejemplo, números de cadena, etc.

  • Atributos: las características del objeto, que están representadas por atributos en el objeto (sustantivo)
  • Método: El comportamiento de un objeto, representado por un método en el objeto (verbo

clase

En el proceso de ES6, se introdujo el concepto de clase. La clase extrae la parte común del objeto y la clase generalmente se refiere a una clase grande.

Crea clases y objetos

Precauciones

El objeto instanciado debe tener nuevo siempre que se ejecute el constructor de la nueva clase de palabra clave.
Constructor () es el constructor de la clase, utilizado para pasar parámetros y devolver el objeto instanciado.
Use class para crear una clase con la primera letra del nombre de la clase en mayúscula, sin agregar paréntesis
, no es necesario que todas las funciones de la clase agreguen función y no es necesario agregar una coma entre varias funciones.


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>创建类与对象</title>
    </head>
    <body>

    </body>
    <script>
        // 创建类
        class People {
            constructor(name, age) {
                this.name = name;
                this.age = age;
            }

            say(sing) {
                console.log(sing)
            }
        }

        // 创建实例化对象
        let YaoZiMo = new People('尧子陌', "18");
        console.log(YaoZiMo.name);
        console.log(YaoZiMo.age);
        YaoZiMo.say('两只蝴蝶')
    </script>
</html>


Inserte la descripción de la imagen aquí

Herencia de clases

Utilice extensiones para permitir que las subclases hereden de la clase principal

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>类的继承</title>
    </head>
    <body>
    </body>
    <script>
        // 类的继承
        class Father {
            constructor() {

            }

            money() {
                console.log(100)
            }
        }

        // 继承父类中的方法与属性
        class Son extends Father {

        }

        // 创建子类的实例化对象
        var son = new Son();
        son.money()
    </script>
</html>



Inserte la descripción de la imagen aquí

Llamar a la función normal

super palabra clave

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>super调用普通函数</title>
    </head>
    <body>

    </body>
    <script>
        // 父类
        class Father {
            say() {
                return 'hello word'
            }
        }

        // 子类
        class Son extends Father {
            say() {
                console.log(super.say())
            }
        }
        var son = new Son();
        son.say()
    </script>
</html>




Inserte la descripción de la imagen aquí

Las subclases heredan los métodos de la clase padre y amplían sus propios métodos.

Nota: se debe llamar a super () antes de esto en el constructor de subclase

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>子类继承父类的方法 同时扩展子类的方法 </title>
    </head>
    <body>

    </body>
    <script>
        // 父类 有加法方法
        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            sum() {
                console.log(this.x + this.y)
            }
        }

        // 子类

        class Son extends Father {
            constructor(x, y) {
                // super()方法必须在子类的this之前进行调用
                super(x, y)
                this.x = x;
                this.y = y;
            }
            subduction() {
                console.log(this.x - this.y)
            }
        }

        // 对子类进行实例化 获取类的对象
        var son = new Son(5, 3);
        // 子类调用父类的方法
        son.sum()

        son.subduction()
    </script>
</html>



Inserte la descripción de la imagen aquí

Tres puntos a tener en cuenta sobre clases y objetos en ES6.

1. En ES6, la clase no tiene promoción variable, por lo que la clase debe definirse antes de que se pueda instanciar el objeto
2. Las propiedades públicas y los métodos en la clase deben agregarse este
3. El esto en el constructor apunta al instanciado objeto, y esto en los puntos del método El llamador de este método


<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>使用类的注意事项</title>
    </head>

    <body>
        <button type="button" class="bth">点击</button>
    </body>
    <script>
        var that;
        var _that;
        class People {
            constructor(name, age) {
                that = this;
                console.log(this)
                this.name = name;
                this.age = age;
                this.bth = document.querySelector('button');
                this.bth.onclick = this.sing;
            }

            sing() {
                console.log(this) //里面的this指向bth按钮
                console.log(that.name) //that指是constructor中的this
            }
            dance() {
                _that = this;
                console.log(this) //此时的this指向实例化对象 因为实例化对象调用了dance这个函数

            }
        }

        // 创建类
        var people = new People('尧子陌');
        console.log(that === people)
        people.dance()
        console.log(_that === people)
    </script>

</html>



Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_45419127/article/details/112643423
Recomendado
Clasificación