• JS基础知识


    1.splice( start , deleteCoun t, value,… ),这个方法有三个参数,分别代表:

    start:开始插入和(或)删除的数组元素的下标。

    delectCount:从start开始,包括start所指的元素在内要删除的元素个数。这个参数是可选的,如果没有指定它,splice()将删除从start开始到原数组结尾的所有元素。

    value , … :要插人数组的零个或多个值,从start所指的下标处开始插入。

    splice(2,1 )表示删除一个数组下标为2的内容

    2.for each可以遍历,三个参数(item,index,arr)

    如果要改变数组,通过item和index,arr改变

    3.#fn() 和 fn 的区别【重要】

    fn():调用函数。调用之后,还获取了函数的返回值。

    fn:函数对象。相当于直接获取了整个函数对象。

    4.arguments 的使用

    当我们不确定有多少个参数传递的时候,可以用 arguments 来获取。在 JavaScript 中,arguments 实际上是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象(只有函数才有 arguments 对象),arguments 对象中存储了传递的所有实参.

    arguments的展示形式是一个伪数组。伪数组具有以下特点:

    可以进行遍历;具有数组的 length 属性。

    按索引方式存储数据。

    不具有数组的 push()、pop() 等方法。
    在这里插入图片描述

    5.函数内 this 的指向【非常重要】

    我们在《JavaScript 基础/函数.md》这篇文章讲过,函数的调用有六种形式。

    根据函数的调用方式的不同,this 会指向不同的对象:

    1.以函数的形式(包括普通函数、定时器函数、立即执行函数)调用时,this 的指向永远都是 window。比如fun();相当于window.fun();

    2.以方法的形式调用时,this 指向调用方法的那个对象

    3.以构造函数的形式调用时,this 指向实例对象

    4.以事件绑定函数的形式调用时,this 指向绑定事件的对象

    5.使用 call 和 apply 调用时,this 指向指定的那个对象

    call() 方法的作用

    call() 方法的作用:可以调用一个函数,与此同时,它还可以改变这个函数内部的 this 指向。

    call() 方法的另一个应用:可以实现继承。之所以能实现继承,其实是利用了上面的作用。

    apply 传入数组

    var obj1 = {
    nickName: ‘qianguyihao’,
    age: 28,
    };

    function fn1(a) {
    console.log(this);
    console.log(this.nickName);
    console.log(a);
    }

    fn1.apply(obj1, [‘hello’]); // 先将 this 指向 obj1,然后执行 fn1() 函数
    const maxValue = Math.max.apply(Math, arr1); // 求数组 arr1 中元素的最大值

    bind() 方法

    不会调用函数,但是可以改变函数内部的 this 指向。

    6.闭包

    闭包(closure):指有权访问另一个函数作用域中变量的函数。

    上面这个概念,出自《JavaScript 高级程序设计(第 3 版)》这本书。上面的概念中指出,闭包是一种函数;当然,你可以把闭包理解成是一种现象。具体解释如下。

    简单理解就是:如果这个作用域可以访问另外一个函数内部的局部变量,那就产生了闭包(此时,你可以把闭包理解成是一种现象);而另外那个作用域所在的函数称之为闭包函数。注意,这里强调的是访问局部变量哦

    7.拷贝

    浅拷贝:只拷贝最外面一层的数据;更深层次的对象,只拷贝引用。传址
    1)for in逐个拷贝
    2)assign语法糖

    深拷贝:拷贝多层数据;每一层级别的数据都会拷贝。

    总结:

    拷贝引用的时候,是属于传址,而非传值。关于传值和传址的区别,是很基础的内容,详见《JavaScript 基础/对象简介.md》这篇文章。

    深拷贝会把对象里所有的数据重新复制到新的内存空间,是最彻底的拷贝。

    在这里插入图片描述

    JS 牛客网刷题

    获取元素方式
    document.getXX

    事件三要素
    事件源 按钮
    事件类型 点击
    事件处理程序 函数

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <button id="btn">唐伯虎</button>
        <script>
            var btn = document.getElementById('btn')
            btn.onclick =function(){
                alert("点秋香")
            }
        </script>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    / 描述
    // 请将下面这句话以段落的形式展示在浏览器中——“牛客网是一个专注于程序员的学习和成长的专业平台。”
    // 给定代码:
    // html:
    // 牛客网是一个专注于程序员的学习和成长的专业平台。
     
    // 综合讨论区各大佬的解法整理如下:
     
    // 解法1 HTML简单实现
    <p>牛客网是一个专注于程序员的学习和成长的专业平台。</p> 
     
    // 解法2 JS实现 修改给定的HTML代码,定位body并用带p标签的文本代替原文本
    let body = document.getElementsByTagName("body")[0];
    body.innerHTML = body.innerText.replace("牛客网是一个专注于程序员的学习和成长的专业平台。","

    牛客网是一个专注于程序员的学习和成长的专业平台。

    "
    ); // 解法3 JS实现 获取给定HTML代码中的文本,删除原子节点,给获取的文本加上p标签,然后插入页面 const pInnerText = document.body.childNodes[0].textContent.trim(); document.body.removeChild(document.body.childNodes[0]); const p = document.createElement('p'); p.innerHTML = pInnerText; document.body.appendChild(p); // 解法4 JS实现 创建一个p标签,嵌入到body中,缺点是没有删除给定的不带p标签的文本 let p = document.createElement("p"); p.innerText = "牛客网是一个专注于程序员的学习和成长的专业平台。"; document.body.append(p); // document.querySelector("body").append(p); // body不需要selector,直接document.body就可以了 // 解法5 JS使用document.write,缺点是没有删除给定的不带p标签的文本 document.write('

    牛客网是一个专注于程序员的学习和成长的专业平台。

    '
    );
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    跑男策划书
    深入鸿蒙开发-OpenHarmony高性能开发的三位一体
    mongoose实现httpserver,client
    AndroidStudio 新建工程的基本修改及事件添加
    九齐NY8A051H单片机概述及特征应用
    Linux中通过PID找到对应的进程以及所在目录
    手机,蓝牙开发板,TTL/USB模块,电脑四者之间的通讯
    UI自动化测试(弹出框,多窗口)
    RK3399驱动开发 | 14 - AP6255 SDIO WiFi 调试(基于linux5.4.32内核)
    C# in a Nutshell 系列(3)C#语言基础
  • 原文地址:https://blog.csdn.net/qq_41876456/article/details/124758518