Javascript 复习-1

1.JavaScript组成:

    1.ECMAScript(核心js)
    2.DOM(文档对象模型 js操作html的api)
    3.BOM(浏览器对象模型 js操作浏览器的api)


2.JavaScript运行的环境

    1.node
    2.浏览器


3.JavaScript特点:

    1.解释型语言
    2.弱类型语言
    3.按照代码解析顺序从上至下执行
        console.log(a);
        var a=10;

        var a;
        console.log(a);
        a=10;
    4.区分大小写


4.注释 // /**/

5.标识符命名规则

    1.由字母数字下划线以及$组成
    2.不能由数字开头
    3.使用驼峰式命名 firstName lastName
    4.不能使用关键字或者保留字


6.变量

    var let const
    1.var声明的变量可以重复声明
    2.var声明的变量可以变量提升
    3.var声明的变量不存在块级作用域


7.数据类型(9种数据类型)

    1.基本数据类型/简单数据类型:string number boolean null undefiend symbol
    2.引用数据类型/复杂数据类型:object Array function


8.深拷贝(值传递)/浅拷贝(引用传递)

    1.值得复制拷贝--深拷贝
        var a=1;
        b=a;
        a=2;
    2.引用地址得传递

var obj={
            name:"zhangsan"
        }
        obj1=obj;//指针 引用地址 1001

如何实现深拷贝?*****

9.undefined与null的关系

    undefiend派生自null


10.==和===区别?****

    1.==比较得是值 类型不一致转换为同一类型再比较
    console.log(1=='1');//true
    2.===比较得是数据类型 类型不一致 直接返回false
    console.log(1==='1');//false
    console.log(NaN===NaN);//false


11.类型判断********

    typeof返回值:undefiend number string boolean object(null {} []) function symbol


12.NaN isNaN isFinite Infinity

     NaN hello%2
     isNaN 判断是不是不是一个数
     不是一个数 返回true
     是一个数 返回false
     isFinite 判断有效值
     9/0 Infinity
     -9/0 Infinity

对象

    1.单个对象的创建

        字面量 var obj={}
        构造函数 var obj=new Object();//{}


    2.对象的访问

        点访问 obj.name
        中括号访问 obj['age']


    3.遍历对象

        for(let key in obj){
            key--键 属性名
            obj[key]--值 属性值
        }
        var str='hjagsjfkahk';
        for(let key of obj){
            
        }


    4.删除对象属性

        delete obj.name


    5.显示类型转换

        Boolean()
        String()
        Number()


    6.检测属性

        1.in (检测某属性是否是某对象的自有属性或者是继承属性)
        'name' in obj 'valueOf' in obj
        2.hasOwnProperty(检测属性是否是自有属性 继承属性返回false)
        obj.hasOwnProperty('valueOf');//false
        3.propertyIsEnumerable(检测属性是否是可枚举属性 可枚举属性返回true)
        obj={
            name:"zhangsan",
            age:12
        }


    7.原型 *****    

    原型:每一个构造函数都有一个原型对象,原型对象都有一个指针(constructor)指向构造函数
    实例有一个指针(__proto__)指向原型对象
    静态方法:只能由构造函数本身去调用
    Object.defineproperty()
    实例/原型方法:存在原型对象中得方法 valueOf() toString() constructor

隐式转换

1.基本数据类型

    number + 'string'
    number + number


2.引用数据类型

    object  valueOf() toString()
//相加 转换规则
// 1.默认调用的是toString() [object Object] string
// 2.如果内部重新写了toString()调用toString()
// 3.如果内部重写了valueOf()调用valueOf()
// 4.如果内部重新写了toString()和valueOf() 调用valueOf();


显式转换

    1.将其他数据类型转换为String
        1.toString()
        2.+ "" + ''
        3.String()
    2.将其他数据类型转换为number
        1.Number()
        2.parseInt();12.1
        3.parseFloat();
        4.+
    3.将其他数据类型转换为Boolean
        1.Boolean()
        2.!!a

深入理解对象属性

      数据属性 访问器属性区别?
    数据属性:相当于给当前对象定义了一个公共属性,访问修改直接返回value值;
    访问器属性:可以控制访问或修改这个属性的具体行为;

数据属性:
    1. Configurable 表示是否可删除
    2.Enumerable 表示是否可枚举
    3.Writable 表示是否可修改
    4.Value 属性的属性
    要修改/定义一个属性特性,必须使用defineProperty(目标对象,目标属性,{配置数据属性})
    要修改/定义多个属性特性,使用defineProperties(目标对象,{配置多个属性})
    获取对象的所有自身属性的描述符
    获取一个:
    getOwnPropertyDescriptor(目标对象,目标属性)
    获取所有:
    getOwnPropertyDescriptors(目标对象)


    访问器属性:
        1.Configurable 是否可删除 默认false
        2.Enumerable 是否可枚举 默认false
        3.Get 读取属性调用的函数
        4.Set 设置属性调用的函数
            var book={
            _year:2022
        }
        Object.defineProperty(book,'year',{
            get(){
                return this._year
            },
            set(newYear){
                if(newYear<=2022){
                    this._year=newYear
                }
            }
        })
        console.log(book.year);
        book.year=2021;
        console.log(book.year);


2.对象序列化和反序列化

    JSON.stringify();将对象转化为json字符串
    {
        "name":"zhangsan",
        "age":12
    }
    JSON.parse();将json字符串转化为对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值