JS--Day16 (orientado a objetos + creación de clases)

1. API de nueva iteración de ES5

①forEach atraviesa todos los elementos de la matriz

Parámetro: forEach (función de devolución de llamada)

Función de devolución de llamada (valor de elemento, [índice de elemento], [nombre de matriz donde se encuentra el elemento])

valor de retorno: ninguno

let arr = [6,5,7,4,8,9];
function add(x,index,a){
         a[index] += 10;
     }
 arr.forEach(add);
 console.log(arr);

②mapa: no hay diferencia entre forEach y forEach sin considerar el valor de retorno

map tiene un valor devuelto, y el valor devuelto es una nueva matriz formada por el valor devuelto por la función de devolución de llamada

     let arr = [6,5,7,4,8,9];
     function add(x,index,a){
         a[index] += 10;
         return a[index];
     }
     let arr1 = arr.map(add);
     console.log(arr1);

③filtro: filtrado de datos

Parámetros: función de devolución de llamada ---> los parámetros de la función de devolución de llamada son los mismos

Valor de retorno: elemento de matriz que satisface la condición de filtro

    let arr = [6,5,7,4,8,9];
    function fun(x){
        if(x%2){
            return true;
        }else{
            return false;
        }
    }   
    let arr1 = arr.filter(fun);
    console.log(arr1);

2. Similitudes y diferencias entre la orientación a procesos y la orientación a objetos

① orientado al proceso

programa = algoritmo + sintaxis;

Algoritmos: énfasis en los pasos, paso a paso

Defectos del pensamiento de programación orientado a procesos: 1. Para cosas simples, a medida que aumenta la escala del problema, el proyecto eventualmente se volverá incontrolable 2. La reutilización es relativamente pobre (función)

② Orientado a objetos

programa = objeto1 + objeto2 + ... + objeton;

Objeto: una unidad de paquete independiente, que incluye todas las propiedades y métodos relacionados con el objeto

Al analizar problemas: dar prioridad a los objetos.En pocas palabras: todo es un objeto.

3. Clases y Objetos

① clase y objeto

El proceso de abstraer cosas, abstraer -> describir cosas

Abstraer atributos y comportamientos, y luego resumir objetos con los mismos atributos y características de comportamiento, esta es la clase

②Clase: una colección (plantilla) de objetos con los mismos atributos y características de comportamiento, es un tipo, no existe realmente

③ Objeto: instanciación de la clase (existencia real)

4. Clase de creación ES5

Aunque JS utiliza el pensamiento orientado a objetos, no tiene el concepto de clases, simula clases a través de funciones y se considera como funciones de clases, también conocidas como constructoras.

①esta orientación

a. Utilizado junto con el cuerpo del evento, el elemento que desencadena el evento

b. Usado junto con funciones ordinarias (excepto para cuerpos de eventos y constructores), llamar al objeto de la función

c. Usado junto con el constructor, el nuevo objeto

d. Se usa junto con la función de flecha (la función de flecha no tiene esto), donde este es el prefijo de su elemento principal

②La diferencia entre funciones ordinarias y constructores

a. Se recomienda escribir en mayúscula la primera letra del constructor

b.El constructor no puede tener retorno

c. El constructor debe usarse junto con la nueva palabra clave, lo que significa crear un objeto

 //在构造方法中出现的this,是new出来的对象
    function Student(name,age,gender){
        //定义属性:其实就是变量
        this.name = name;
        this.age = age;
        this.gender = gender;
        //定义行为:就是函数
        this.eat = function(){
            console.log("eat");
        }
        this.sleep = function(){
            console.log("sleep");
        }
        //在一个成员的方法中,使用其他成员
        this.showValue = function(){
            console.log(this.name,this.age,this.gender);
            this.sleep();
            this.eat();
        }
    }
    let s1 = new Student("老王",18,'M');
    // console.log(s1.name,s1.age,s1.gender);

    // s1.eat();
    // s1.sleep();
    s1.showValue();
    let s2 = new Student("罗翔",48,'M');
    s2.showValue();

5. Clase de creación ES6

   class 类名{
         //构造方法
         constructor(){
         }
         //其他方法
     }
//==============================================================================
    class Student{
        //构造方法中构造属性
        //constructor固定的关键字,代表构造函数
        constructor(name,age){
            this.name = name;
            this.age = age;
        }
        sleep(){
            console.log("sleep");
        }
        showValue(){
            console.log(this.name,this.age);
            this.sleep();
        }
    }
    let s = new Student("9527","M");//--->调用的是constructor
    s.showValue();

ejercicios de aula

//1.有一个正立方体,边长a为10;求它的体积volume.=====================================
    //a.找对象b.根据对象抽象出其属性和行为创建类c.通过类实例化对象使用

    class squre {
        constructor(a) {
            this.a = a;
        }

        area() {
            return Math.pow(this.a, 3);
        }
    }

    let s = new squre(10);

    console.log(s.area());

//2.编写一个分数类,数据成员包含分子与分母,实现+,-,*,/==============================
    class A {
        constructor(n, m) {
            this.n = n;
            this.m = m;
        }
        calc(data, op) {
            switch (data, op) {
                case "+":
                    return this.n / this.m + data.n / data.m;
                case "-":
                    return this.n / this.m + data.n / data.m;
                case "*":
                    return this.n / this.m + data.n / data.m;
                case "/":
                    return this.n / this.m + data.n / data.m;
            }
        }
    }

    let x1 = new A(2, 3);
    let x2 = new A(4, 5);

    console.log(x1.calc(x2, "+"));

//放大镜作业===================================================================
  let oLis = document.querySelectorAll("li");
    let oBox = document.querySelector("#box");

    for(let i=0; i<oLis.length; i++){
        oLis[i].onmouseover = function(){
            oBox.style.display = "block";
        }

        oLis[i].onmouseout = function(){
            oBox.style.display = "none";
        }

        oLis[i].onmousemove = function(evt){
            oBox.style.left = evt.pageX +10+ "px";
            oBox.style.top = evt.pageY +10+ "px";
            oBox.style.backgroundImage = `url(img/shirt_${i+1}_big.jpg)`;
        }
    }
//双色球========================================================================
  function doubleColorBall(){
        let blue = 0;
        let redArr = [];
        blue = rand(1,16);
        let set = new Set();
        while(true){
            if(set.size == 6){
                break;
            }
            set.add(rand(1,33))
        }
        redArr = Array.from(set);
        console.log(redArr);
        console.log(blue);
    }
    doubleColorBall();

    function rand(min,max){
        return Math.round(Math.random()*(max-min)+min);
    }

Supongo que te gusta

Origin blog.csdn.net/weixin_72756818/article/details/129687429
Recomendado
Clasificación