JS笔记第四期(对象、函数、数组)

一、对象

对象分类:
         1、内建对象。例如:Math、String()、Boolean()……
         2、宿主对象。例如:DOM、BOM
         3、自定义对象。
创建对象:
         1、var obj=new Object();    
         var obj={属性名字:属性值,属性名字:属性名……};
         2、
        //向对象中添加属性  obj.name="猪猪吧";  
        //读取对象中没有的属性不会报错,会返回undefined
            console.log(obj);    document.write(obj.name);
        //修改属性值   obj.name="踹二";
        //删除属性 delete obj.name;
        //in 检查对象里面是否有属性值,返回布尔类型
        console.log("name" in obj);
        
        4、对象的属性值也可以是函数,这时,称这个函数为这个对象的方法
        

二、函数

   函数
        1、函数也是一个对象,可以封装一些功能(代码),在需要时执行这些功能
        2、使用typeof检查时会返回function
        创建函数
        1、var fun=new function([形参]){
            代码块
        };//相当于一个赋值
        2、function 函数名([形参]){
            代码块
        }
        3、function sum(a,b,c){
            var d=a+b+c;
            return d;//有返回值更方便函数调用
        }
         var rs=sum(3,4,6);
         
         函数的实参可以是任意数据类型,也可以是对象,也可以是一个函数

function sayhai(o){
			console.log(o.name+";"+o.age+";"+o.add+";")
		}
		var o={
			name:"猪猪吧",
			age:18,
			add:"北门桥"
		};
		sayhai(o); 

4、使用return 可以退出整个函数,返回值可以是任何数据类型
        5、立即执行函数
         (function(){
           alert("我是一个立即执行的函数");
       })();    
       6、for(var 变量in 对象){
           
       }
    对象中有几个属性,循环就会执行几次,每次执行时会将对象中的一个属性的名字赋值给变量
    7、this根据调用方式的不同,值不同
        -以函数形式调用,this永远是window
    */
   /* 使用工厂方法创建对象,无法区分创建的类型

 function createPerson(name,age,sex){
	   //创建对象
	   var obj=new Object();
	   //向对象中添加属性
	   obj.name=name;
	   obj.age=age;
	   obj.sex=sex;
	   obj.sayName=function(){
		   alert(this.name);
	   };
	   //将新对象返回
	   return obj;
   }
   var obj1=createPerson("猪猪吧",18,"女");
   var obj2=createPerson("踹二",19,"女");
      obj1.sayName();

函数的this方法


	function Person(name,age,sex){
			this.name=name;
			this.age=age;
			this.sex=sex;
	
		}
		//Person.prototype	共有的属性可以放在原型对象中
		Person.prototype.sayName=function(){
		alert("大家好,我是:"+this.name);
		};
		var per1=new Person("欸嘿",18,"女");
		per1.sayName();
	   重写toString方法
        Person.prototype.toString=function(){
	         return this.name+"_"+this.age+"_"+this.sex;
        }

JS 有自动的垃圾回收机制,我们无法进行操作,我们只需要将不再使用的设置为NULL

函数的方法,调用下面这两个都可以调用函数执行
  1、fun.call(obj,1,2)
  2、fun.apply(obj,[1,2])
可以将一个对象指定为第一个参数,此时这个对象为现在的函数执行的this
    
    封装实参的对象arguments
     -arguments.length 表示实参的长度
     -属性:callee 对应当前正在执行的函数对象
    
    Math
     -Math是一个工具类而非函数,里面封装一些数学函数
     -Math.abs()计算绝对值
     -Math.ceil()对一个数向上取整
     -Math.floor()对一个数进行向下取整,小数部分会被舍掉
     -Math.random()生成0-1之间的随机数 ,不包括0或者1 
        -生成一个x-y之间的随机数 Math.round(Math.random()*(y-x)+x);
    -max()/min()获得多个值之间的最大/最小值
    -Math.poow(x,y)返回x的y次幂
    -sqrt()开平方

三、数组

数组(Array)
         -数组也是一个对象
         -以整数数字为索引(0开头)
         -读取不曾存在的索引会返回undefined
         -最大索引=length-1
         -数组中的元素可以是任意数据类型

创建数组
        var arr=new Array();
        var arr=[];
        //语法:数组.length 可以返回数组的长度 
        1\push("元素")  可以向数组的末尾添加一个或者多个元素,并返回数组新的长度
        2\pop() 可以删除数组最后一个元素,并将被删除的元素作为返回值返回
        3、unshift() 向数组开头添加一个或者多个元素,并返回新的长度
        4、shift()删除数组第一个元素并返回被删除值
        5\slice(start,end) 返回一个新的数组,元素为arr的start索引到end-1索引
        6、splice(开始位置索引,删除个数,“新的元素”-插入到开始索引位置) 删除数组指定元素,并将被删除元素返回

  var arr=["踹二","猪猪吧","哈哈"];
	   arr.push("二狗");
	   console.log(arr);
	   arr.pop();
	   //用for循环遍历数组
	   for(var i=0;i<arr.length;i++){
		   console.log(arr[i]);
	   }

创建一个函数,将PersonArr中满十八岁的对象提取出来,封装到一个数组中并返回

 function Person(name,age){
	 		this.name=name;
	 		this.age=age;
	 
	 	}
		
	Person.rototype.toString=function(){
	     return this.name+"_"+this.age;
	}; 
	 //创建对象
	 var per1=new Person("猪",1);
	 var per2=new Person("猪猪",9);
	 var per3=new Person("猪猪吧",18);
	 var per4=new Person("哈",18);
	 var per5=new Person("哈哈",16);
	 //保存到数组里面
	 var perArr=[per1,per2,per3,per4,per5];
	 //创建函数将满十八岁的提取出来封装到新的数组中并返回
	 function getAdult(arr){
		 //创建新的数组
		 var newArr=[];
		 //遍历arr
		 for(var i=0;i<arr.length;i++){
			 //判断对象的年龄是否符合要求
			 if(arr[i].age>=18){
				 newArr.push(arr[i]);
			 }
		 }
		 //返回新的数组
		 return newArr;
	 }
	var rs= getAdult(perArr);
	 console.log(rs);

数组去重(去掉数组重复元素,保留非重复元素

var arr=[1,1,2,3,4,4,5,6,7,8,3,4,9,10];
	for(var i=0;i<arr.length;i++){
		//获取当前元素后的所有元素
		for(var j=i+1;j<arr.length;j++){
			//判断两个元素是否相等
			if(arr[i]==arr[j]){
				//如果有相等就删除后面的那一个
				//当删除了这个元素后,后面的元素会自动补位
				//此时j自减,否则补位上来的元素不会再比较,会造成bug
				
				arr.splice(j,1);
				j--;
			}
		}
	}
	console.log(arr); 
    1、concat()可以将两个或者多个数组连接,并将新的数组返回
      --arr.concat(arr2,arr3,"元素1");
    2、join()可以将数组转换为一个字符串,将转换为的字符串作为结果返回
      --语法:join(“连接符”);
            若不指定连接符,默认“,”
            
     3、reverse()--反转数组 
     4、sort()可以对数组元素进行排序,默认按照Unicode编码排序,如果对纯数字进行排序的话会有错误
     --但是我们可以自己指定排序规则,在sort()中添加一个回调函数,来指定排序规则
      -浏览器会根据回调函数的返回值决定元素顺序
         -返回值大于0则交换位置,小于等于0则不交换
          -升序排列返回a-b
          -降序排列返回b-a
       方法示例:
 arr=["d","s","a","b","e","c"];
	arr1=[1,4,2,3,5,7,8,6,9];
    arr1.sort(function(a,b){
		if(a>b){
			return 1;
		}else if(a<b){
			return -1;
		}else{
			return 0;
		}
	});
    console.log(arr1);   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值