JavaScript复习

数据类型

基本数据类型
string number boolean
复杂数据类型(引用类型)
Array Date Object RegExp String Number Boolean
如何获取一个数据的数据类型
使用关键字 typeof
typeof返回值为string类型
String Number Date 首字母大写的都是构造函数
两个空的类型
null
undefined
什么时候对象会是null
//变量不可能为null值,除非手动去设置
什么时候要给对象赋值为null?
//要解除对象的占用(引用)的时候

全等于和等于的区别

=== 全等
类型和值都要进行比较
== 等于
只比较值

in关键字

最常用的是在for in 循环中 遍历对象的键

		for(var k  in obj){
       console.log(typeof k);
       console.log(k);
   }

	判断属性是否存在于对象中
        //语法   属性名 in 对象
		var propName = "name";
   var isExsit = propName in obj;
   console.log(isExsit);

注意: 使用in关键字的时候,属性名称为字符串类型,需要用引号引起来
注意: in关键字操作数组的时候判断的是索引是否存在,而不是值

 var arr = [4, 6, 3, 4];

   console.log(0 in arr);(true)
    //这里会做一个隐式的类型转换
   console.log("0" in arr);(true)
	如何判断数组中是否存在指定的值
    //1. for循环 如果找到了就输出
    //2. indexOf  返回值为指定的数对应的索引,如果没有找到 返回-1
    console.log(arr.indexOf(9));
		for(var i=0;i<arr.length;i++){
  if(arr.indexOf(i) == target){
     console.log(arr.indexOf(i))
}
}

新建对象

var now = new Date();
    console.log(now);

    //GMT  格里尼治标准时间
    //UTC  世界协调时间
    

值类型和引用类型

说明

值类型: string number boolean undefined
存储的就是数据本身的变量就是值类型的数据
引用类型:object
存储的是数据在内存中的地址,数据在内存中单独存储 就是引用类型的数据

引用类型赋值
引用类型赋值的时候,是将变量中存储的地址复制一份单独存储,但是两个变量共享同一个对象
修改其中一个对象,两外一个引用来访问的时候,也会访问到修改后的对象
###特征
值类型的赋值
直接将存储的数据复制一份进行赋值,两份数据在内存中是完全独立的
引用类型相反
在函数中的使用
值类型做函数的参数
函数内部的变量,也就是形参和实参只是简单的赋值操作,两个数据独立存储于内存中的
在函数内部对形参进行修改,不会影响外面的变量
引用类型做函数的参数
还是把实参存储的地址赋值给了形参,在函数内部,形参同样也指向该对象,
所以,在函数内部对该对象进行修改,会影响到外面的变量
注意:如果在函数内部重新创建对象,为该形参赋值,那么两个对象将不再有关系
修改其中一个,另外一个不受影响

对象的动态特征

对象的动态性是指,在对象创建出来之后,为对象添加新的属性或者方法
使用点语法进行赋值的时候,如果对象存在该属性,是修改操作
//如果对象不存在该属性,是给该对象新增属性并且赋值
对象是不是就是键值对儿的集合
// 对象名[属性名] 注意这里的属性名 是字符串

console.log(obj["name"]);

//这里如果使用的键不是字符串类型,会隐式的转换成字符串类型
/新增属性、方法的方式有:
//1.点语法
//2.通过 [] 的形式去添加

逻辑中断

即c中的短路

delete关键字

//delete关键字可以用来删除对象的属性,还有未使用var声明的变量
		//    var num = 10;
//    var result = delete  num;
//    console.log(result);//false
	    //delete关键字有返回值 用来表示删除属性是否成功
	    //如果删除的是不存在的属性,返回值为true
		  var result=  delete obj.gender;
   console.log(result);
	    //如果删除的属性存在原型当中,那么返回值为true,但是并未删除
		 console.log(obj.toString()); //[object Object]
		var result = delete obj.toString;
    console.log(result);//true
    console.log(obj.toString());//[object Object]
    

定义函数

1.函数声明

function funcName(){
            //函数体
        }
	//2.函数表达式
        //在使用函数表达式声明函数的时候,function后面可以跟函数名
        //但是 这个函数名。只限在函数内部使用,外部无法访问
		 var funcName1 = function name(){
            //
            console.log("谁说不可以");
        }
funcName1();
	 //3.Function
        var funcName2 = new Function();

DOM操作复习

//增
        //document.createElement
        //appendChild
	//删
        //removeChild
	//改
        //style
        //id
        //className
        //innerHTML
        //innerText
	//查
        //getElementById
        //getElementsByTagName
        //getELementsByClassName

异常处理

异常最大的特征,就是一旦出现异常,后面的代码将不会再执行
//那为了保证后面代码在出现异常之后,还能继续执行,所以就要进行异常处理
注意 语法异常 try catch无法捕获
异常捕获语句

      //try catch finally
		try{
            a();
//            //可能会出现问题的代码
//
//            throw "你的代码坏了!!!";
//        }
//        catch(e){
//
//            //出现异常后的处理代码
//            console.log(e);
//        }
//
//        function test() {
//            console.log("我是之后的代码");
//        }

			try{
            sum(0);
        }
        catch(e){
            console.log(e.errMsg);
        }

        //异常捕获语句的完整形式

        try{
            //可能出现异常的代码
            xyz();

        }
        catch(e){
            //出现异常后的处理代码
        }
        finally{
            console.log("我是finally中的代码");
            //不管有没有出现异常,这里的代码都会执行
            //node.js
            //做释放资源的操作。
        }
	手动抛出异常信息 使用 throw关键字
		unction sum(num1, num2){
            if(num1 == undefined || num2 == undefined){
                throw {
                    errMsg: "能不能好好玩耍了,乖乖给我传参!!",
                    errCode: 13888888888
                };
            }else{
                return num1 + num2;
            }
        }

面向对象

概念

面向过程的思维方式:
//就是把解决问题的关注点,放到解决问题的每一个详细的步骤上面!
面向对象的思维方式:
//就是把解决问题的关注点,放到解决问题需要的一些列对象身上
在JS当中 什么是对象?
//键值对儿的组合就是对象
现实生活中的对象的特征对应到JS当中是对象的属性!

现实生活中的对象的行为对应到JS当中就是对象方法

		//如何在一句话中找出所有的对象
        //名词提炼法!!!
        //小明在公交车上牵着一只叼着香肠的狗
        var xm = {
            name:"小明",
            age:12,
            liuDog:function () {
                console.log("遛狗啦!!!");
            }
        }
	编程
		要求创建出来一个div 并且设置样式,然后加到body标签当中
			面向过程
				1.创建div
//            var div = document.createElement("div");
//            //2.设置div的样式
//            div.style.height = "200px";
//            div.style.width = "200px";
//            div.style.border = "1px solid pink";
//            //3.添加div到body中去
//            document.body.appendChild(div);

			面向对象
				//使用面向对象的思维方式来解决js问题
            $("body").append("<div style='width:200px;height:200px;border:1px solid pink'></div>")

面向对象是对面向过程的封装,有了面向对象并不意味着,就可以抛弃面向过程
为什么要学习面向对象
看懂框架
//编写代码的时候的原则:DRY
//Don’ t repeat yourself
使用函数封装
使用函数将代码封装,使得复用性更高

使用函数封装带来的问题:

//1.全局变量污染
//2.代码结构不够清晰,维护不方便
使用对象封装
/使用对象进行封装后的优势
//1.暴露在全局的只有一个对象名 不会造成全局变量污染
//2.使用对象将代码进行功能模块的划分,有利于日后的维护
little tip: itar 敲tab就可以出现for循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值