• 猿创征文 |【JavaScript】-- js知识点大总结


    目录

     ♡ ‧₊˚ 基础知识 ‧₊˚ ♡

     ♡ ‧₊˚ 对象 ‧₊˚ ♡

     ♡ ‧₊˚ 函数 ‧₊˚ ♡

     ♡ ‧₊˚ 数组‧₊˚ ♡

     ♡ ‧₊˚ 正则表达式 ‧₊˚ ♡

     ♡ ‧₊˚ 面向对象 ‧₊˚ ♡

            四种模式

            继承

     ♡ ‧₊˚ DOM ‧₊˚ ♡

     ♡ ‧₊˚ BOM ‧₊˚ ♡

     ♡ ‧₊˚ gitee使用 ‧₊˚ ♡


     ♡ ‧₊˚ 基础知识 ‧₊˚ ♡


        1.组成:

            核心js dom(文档对象模型) bom(浏览器对象模型)
        2.环境:
            node  浏览器 
        3.特点:
            1.弱类型语言 
            2.解释性语言 
            3.执行顺序按照解析顺序从上至下执行
            4.区分大小写
        4.注释
            // /**/
        5.标识符命名规则
            1.由字母数字下划线$组成
            2.不能由数字开头
            3.不能以关键字和保留字命名
            4.使用小驼峰命名 
        6.变量
            1.var let const
            特点:变量声明提前
                可以重复声明
                    没有块级作用域
        7.数据类型
            1.基本数据类型/简单数据类型:string number boolean null undefined symbol
            2.引用数据类型:Object array function(){}
            区别?
        8.深拷贝/浅拷贝
            值得复制 
            var a=1;
            var b=a;
            浅拷贝:引用地址得传递 ;

    深拷贝:
            var obj={
                name:"zhangsan"
            },
            var obj1=obj;
            如何实现深拷贝?
            let temp={...obj}
            JSON.stringify(JSON.parse(obj));
            lodash _.cloneDeep()
        9.undefined与null的关系
            == true
        10.==和===区别?
            1.前者比较的是值 类型不一样转换为同一类型比较
            2.后者比较的类型 类型不一样直接返回false
        11.类型判断
            typeof string number boolean object undefined symbol function
            isArray 
            instanceof 
        12.NaN isNaN isFinite Infinity -9/0 9/0

     ♡ ‧₊˚ 对象 ‧₊˚ ♡


        1.创建
            1.单个对象:
            var obj={};//new Object()
        2.访问
            obj.name / obj['name']
        3.遍历对象
            for in 
        4.删除属性
            delete obj.name
        5.强制类型转换
            Number()
            Boolean()
            String()
        6.检测属性    
            in 检测是否为自有或者继承属性 'name' in obj
            hasOwnProperty() 检测是否为自有属性 true false
            propertyIsEnumerable() 检测是否为可枚举属性 true 
            toString() valueOf()
        7.原型
            每一个构造函数都有一个原型对象,每一个原型对象都有一个
            指针(constructor)指向构造函数,每一个实例都有一个指针
            (__proto__)指向原型对象;

    数据属性和访问器属性用于设置属性的高级属性:
        8.数据属性
            Writabale: 是否可写
            Enumerable:是否可枚举
            value:'属性值'
            configurable:是否可删除
        9.访问器属性
            get(){} 
            set(){}
            configurable
            Enumerable
            Object.defineProperty(obj,'name',{
                Writabale: 是否可写
                Enumerable:是否可枚举
                value:'属性值'
                configurable:是否可删除
            })
            Object.defineProperties(obj,{
                name:{
                    Writabale: 是否可写
                    Enumerable:是否可枚举
                    value:'属性值'
                    configurable:是否可删除
                }
            })
        10.自身属性的描述符
            getOwnProperty()
            getOwnProperties()
        11.对象序列化和反序列化
            JSON.stringify(); 将对象转换为JSON字符串
            JSON.parse();将JSON字符串对象转换为js对象

     ♡ ‧₊˚ 函数 ‧₊˚ ♡

        1.创建
        function 函数名(){}
        2.声明提前
        3.函数内部属性
            arguments 保存实际参数列表得类数组对象 
            this 
                指向:1.在函数中this指向全局对象 global window
                2.在对象中 this指向拥有该方法得调用者
                3.在当前模块 this指向当前模块 {}
                4.事件:this指向接收事件得dom元素
        4.IIFE(立即执行函数)
        5.作用域
            1.函数内作用域得变量是局部变量
            2.函数外的作用域得变量是全局变量
        6.作用域链
        7.函数调用
            函数名()
            修改this指向?
            call(this,实参列表)
            apply(this,[实参列表])
            bind(this,实际参数)(实际参数)
        8.闭包 ***
            形成条件:
                1.嵌套函数
                2.内部函数存在对外部函数变量得引用
                3.返回内部函数
            优缺点:
                优点:不会造成变量污染 
                缺点:内存泄漏 不会被垃圾回收机制回收 

     ♡ ‧₊˚ 数组‧₊˚ ♡


        1.创建
        var arr=[]//new Array()
        2.访问
        arr[index]
        3.数组api
            1.序列化方法
                toString() join('-') 
                不修改原数组
            2.构造函数方法
                isArray()
                from()
                    Array.prototype.slice.call();
                    [...类数组对象]
                Array.of(10);
            3.栈和队列方法
                pop 删除一个数组元素 从后往前删除 修改原数组
                push 添加一个数组元素 修改
                shift 删除 修改
                unshift 添加 修改
            4.排序方法
                reverse() 修改原数组
                sort() 修改原数组
            5.操作方法
                concat() 拼接数组 不修改原数组
                slice() 截取数组
                    参数:开始位置 结束位置 不包括结束位置 slice(1,3) 不修改原数组
                splice() 添加或者删除数组元素
                    splice(2,0,数组元素) //你从下标为2的元素开始往里面添加元素
                    splice(2,2) 修改原数组 // 从下标为2的元素开始删除两个
                    splice(1);  //  从下标为1的元素开始删除到最后
            6.位置方法
                indexOf() -1或者下标 前-》后
                lastIndexOf()  后--》前
                不修改原数组
            7.迭代方法
                every() 
                some()
                filter()
                map()
                forEach() 没有返回值
                不修改原数组 


        

     ♡ ‧₊˚ 正则表达式 ‧₊˚ ♡


            1.创建
            var reg=/hello/修饰符
            var reg=new RegExp('hello','修饰符')
            2.实例方法
            exec        
            可用来匹配字符串中符合正则表达式的字符串
            如果匹配到,返回值是一个result数组:
            test 用来测试待检测的字符串中是否有可以匹配到正则表达式的字符串
            3.String对正则表达式的支持
                1.search
                2.match
                3.split
                4.replace

     ♡ ‧₊˚ 面向对象 ‧₊˚ ♡

            四种模式


                1.工厂模式
                function person(){
                    return {

                    }
                }
                缺点:无法区分种类 方法冗余
                2.构造函数模式
                function Person(name,age){
                        var obj={};
                        Person.call(obj);this--->obj
                        obj.name='terry';
                        return obj
                    创建一个实例对象
                    将this指向实例对象
                    执行函数体
                    返回对象
                    this.name=name;
                    this.age=age;
                    this.a=a;
                }
                function a(){}
                var obj=new Person('terry',12);
                优点:区分种类 
                缺点:方法冗余
            3.原型模型 
                将属性和方法都存放在原型对象中
                缺点:实例都一样
            4.组合模式
                function Person(name,age){
                    this.name=name;
                    this.age=age
                }
                Person.prototype={
                    constructor:Person,
                    a(){

                    }
                }


            继承


                1.借用构造函数继承 /经典继承
                    Animal.call(this)
                2.原型链继承
                    Dog.prototype=new Animal();
                3.组合继承

     ♡ ‧₊˚ DOM ‧₊˚ ♡

            1.操作节点
                父类型调用
                1.appendChild(); 追加节点 
                2.insertBefore(插入得节点,参考节点)
                3.removeChild(要移除的节点)
                4.replaceChild(替换得节点,被替换的节点)
            cloneNode() 任意类型
            true 深克隆 克隆节点和内容
            false 浅克隆 只克隆节点

            innerHTML 识别代码片段 
            innerText 识别文本内容
            textContent 去除前后空格回车 识别文本内容
            2.事件流
                描述得是页面接收事件得顺序
                分为事件冒泡和事件捕获 
                事件冒泡:从内向外触发事件
                事件捕获:从外向内触发事件
            3.事件代理
                将本应该绑定给子元素得事件绑定给父元素
                优点:减少dom操作和浏览器重排和重绘
                重排和重绘:
            4.阻止事件冒泡和事件默认行为
                stopPropagation() perventDefault()
            5.DOM0级事件 DOM2级事件
                dom.οnclick=function(){}
                dom.οnclick=null;
                function handler(){
                    console.log(1)
                }
                addEventListener('click',handler);
                    addEventListener('click',function(){
                    console.log(2)
                });
                removeEventListener('click',handler)
            6.event.target和event.currentTarget
                前者是事件触发得目标源头 
                后者是正在执行得事件元素
                inner center outer  target-->inner 
                currentTarget inner center outer

     ♡ ‧₊˚ BOM ‧₊˚ ♡

    BOM对象

    1.window对象

    2.screen对象

    3.navigator对象

    4.location对象

    5.history对象

            ajax(要求会手写)
            异步的xml和javascript
            步骤:
                1.创建ajax实例对象
                var xhr=new XMLHttpRequest();
                2.打开一个连接
                Qs.stringify(obj)
                xhr.open(请求方式,请求路径?obj)
                2.1设置请求头
                xhr.requestHeaders('Content-Type','application/json')
                xhr.requestHeaders('Content-Type','application/x-www-form-urlencoded')
                3.发送请求
                xhr.send(JSON.stringify(obj))
                xhr.send(Qs.stringify(obj))
                4.接收响应
                xhr.onreadystatechange=function(){
                    if(xhr.readyState===4&&xhr.status===200){
                        xhr.responseText
                    }
                }

     ♡ ‧₊˚ gitee使用 ‧₊˚ ♡

            开源项目 
            csdn 
            gitee 
            初学者:
                git config --global user.email='';
                git config --global user.username='';
            初始化仓库
                git init 
            追踪修改文件
                git add ./*
            查看提交状态
                git status
            绑定远程仓库
                git remote add origin xxx.git
            查看绑定得远程仓库
                git remote -v
            提交文件到暂存区
                git commit -m '[]'xxx
            提交文件到远程
                git push origin master
            更新远程仓库 团队合作
                git pull orgin mater
            git log 
            git reflog 
            
        
            
        
            


            
        
     

  • 相关阅读:
    第五章:Vuex
    SaaSBase:什么是涂色scrm?
    Servlet学习笔记
    前后端分离跨域问题及SameSite=Lax解决方法
    编程-设计模式 3:单例模式
    在PHP8中对数组进行排序-PHP8知识详解
    隔离出来的“陋室铭”
    【Vuex+ElementUI】Vuex中取值存值以及异步加载的使用
    k8s-pod管理 3
    第十四届蓝桥杯校内模拟赛第一期——Python
  • 原文地址:https://blog.csdn.net/qq_48802092/article/details/126770394