javascript笔记整理(二)

14.常用子类

1.函数
2.数组
3.日期
4.正则
...

15.面向对象

16.(承接14)

1.函数

1.创建
   1>函数字面量
              var say=function(){}
   2>函数声明
	          function say(){}
   3>匿名函数
	          function(){1002}
	          var obj=1001->{}         
	          在被创建时立即调用
	          (function(){})()
	          (声明)()
   4>对象中
	          var obj={
		      name:'lisi',
		      say:function(){}
	          }

	          obj.name
	          obj.say()
	          obj["say"]()
js解析器优先解析函数声明,然后解析使用var操作符声明的变量,但是不赋值,
函数内部代码在函数被调用时执行

var a=10;
var a=20;
console.log(a);//20

function say(a){}
function say(a,b){}
say(10);
js中没有重载概念,只要函数名相同,即为重写


2.函数的调用
           函数名():
           new 函数名()
           ...
3.函数的参数
           形式参数:当前函数需要的参数
           实际参数:实际调用方法时传递的参数
           function say(形式参数){}
           var say=function(形式参数){}
           say(实际参数);
           形式参数和实际参数的个数可以不一致,并且数据类型不限
           
           function say(a,b,c){
	       //1.var a;var b;var c;
	       //2.10-》a;20-〉b
	       console.log(a,b,c);
           }
           say(10,20);
4.函数的内部属性
  arguments:类数组对象
	         用来保存实际参数的对象
	         length:实际参数个数
	         callee:从函数内部指向当前拥有arguments的函数
  this:
	    this指向函数赖以生存的环境对象
	    函数this值什么时候确定?
		    在函数被调用时确定
	    指向谁?
		    当前拥有this的函数被谁调用,被谁调用就指向谁
5.作为值的函数和作为返回值的函数
  值:
		function say(){}

		var handler=say;
		handler();

		function run(h){
			//h->say
			h();
		}
		run(say);

  返回值:
	    {
		  toString:function(){
		  return 10
		 }
	    }

	    function say(){
		.....
		return function(){}
	    }
6.函数的属性
	function say(){}

	obj:{
		say:function(){}
	}

	对象名.属性名
		  obj.name
		  say.xxx

	length:
		      say.length:返回当前函数的形式参数的个数
		      
	prototype:原型对象
		      用来存储非静态方法/公有属性和方法

		      每一个函数都有一个原型对象(prototyoe)
		      每一个对象都有一个构造者(constructor)

	call():
		      函数的调用方式
		      函数名.call(this,实际参数列表)

		      say.call(this,1,2,3,4);
		      say(1,2,3,4);
	apply()
		      函数的调用方式
		      函数名.apply(this,[实际参数列表]);

		      say.apply(this,[1,2,3,4]);

2.数组

[]
一组数据的集合
数据中的所有数组元素,使用逗号隔开,每一个数组元素数据类型任意
数组长度可以动态修改

1.创建
  1>数组字面量
		var arr=[];//空数组
		var arr=[null,undefiend,false,"",function(){},{}];
  2>构造函数
		var arr=new Array();//空数组
		var arr=new Array("hello",false);//创建非空数组
		var arr=new Array(10);//创建一个数组长度为10的数组

		如果参数为1个参数,并且参数类型为number类型,相当于创建一个以number为长度的数组
		如果两个以上参数,相当于将参数作为数组元素创建数组

        function Array(){
	      if(arguments.length==1){
		    if(typeof arguments[0]== 'number'){
			  //底层:创建一个以argumnets[0]为长度的数组
		    }else{
			  //底层:创建一个以1为长度的数组,数组元素为arguments[0]
		    }
	      }else if(argumnets.length==0){
		      创建一个以0为长度的数组
	      }else if(arguments.length>1){
		      创建一个以arguments.length为长度的数组,数组元素为arguments中每一个数组项
	      }
        }

        new Array(10);
2.访问数组元素 
  每一个数组元素都对应一个数组下标(属性名),数组下标从0开始(number)

  arr[index]:访问+设置
		var arr=[1,2,3,4];
		console.log(arr[2]);

  length:
		访问数组长度
		增加/删除数组元素
3.检测数组
	function:
		     typeof function:function
	arr:
		     typeof arr:object
	isArray():
		     Array.isArray(arr);对于数组返回true,非数组返回false
		     当前arr是否为Array类型
		     静态方法
4.转换数组
	toString():arr.tostring()//1,2,3,4
	join("-");将数组转换为string

5.方法
  添加/删除数组元素
  栈方法:先入后出
		 pop():
				删除数组元素
				参数:不需要
				返回值:删除的数组元素
		 push():
				添加数组元素
				参数:添加的数组项
				返回值:添加之后的数组长度

  队列方法:先入先出
		  unshift():
				添加数组元素
				参数:添加的数组项
				返回值:添加之后的数组长度
		  shift():
				删除数组元素
				参数:不需要
				返回值:删除的数组元素
				
  排序:
	   reverse:
	            数组反转
			    参数:不需要
			    返回值:反转之后的数组
			    修改原数组
	   sort():
			    数组排序
			    修改原数组
			    参数:
				0:每一个数组项,相当于会调用toString()之后进行比较,按照字符编码顺序进行排序
		       1:
			      回调函数function(a,b){
				     if(a>b){
					    return 正数:将a放在b之后
					    return 负数:将a放在b之前
				      }
			       }

			      返回值:排序之后的数组(在原数组基础上进行排序)

3.操作方法(非静态方法)

concat(数组的实例对象调用的方法):
			数组拼接
			(arr,arr1)
			参数:想要拼接的数组
			返回值:拼接后的新数组
slice():(不修改原数组)
			数组切割/截取
			参数:
			0:
				返回值:切割后的新数组
				默认从数组开头开始切割,切割到数组末尾,组成新数组
			1:
				参数:index
				开始切割位置
				返回值:从当前位置开始切割,到数组末尾的新数组
			2:
				begin end
				返回值:从begin位置开始切割,切割到end位置结束,不包含结束位置
splice():   数组切割(修改原数组)
            参数:
	        0:
		        返回值:为空数组
	        1:
		        index:begin
		        返回值:从begin位置开始切割,到数组末尾结束;修改原数组
	        2:
		        begin number
		        返回值:从begin位置开始切割,切割number个数组元素所组成的新数组,     number>剩余元素个数=》剩余元素个数
	        3:
		        begin number "content":
		        替换:
		 	        begin number 'content'
		 	        从begin位置开始,删除number个数组元素,在begin位置插入content
		        插入:
		 	        begin 0 'content'
		 	        从begin位置开始,删除0个数组元素,在begin位置插入content

indexOf(key,index):
            查找数组元素
            通过全等操作符进行比较
            参数:key  index
            返回值:
	               找到了返回当前数组元素的下标
	               找不到返回-1
	               默认从前向后查找,找到一个满足条件的元素返回
lastIndexOf():
            查找数组元素
            默认从后向前查找
content index
            找不到返回-1
            找到返回当前数组元素的下标

4.迭代方法

var arr=[11,2,13,4,5];
	for(var i=0;i<arr.length;i++){
		i:index
		console.log(arr[i]);
}

every():
		如果每一个数组元素都满足条件,返回true
some():
		只要一个数组元素满足条件,返回true
map():
		对每一个数组元素进行操作,返回值操作后的数组
filter()
		数组过滤
		将满足条件的数组元素筛选出来放在一个新数组中


forEach(funnction(){
	this->{}
},{}):
	for(){}
	循环体
	index item


参数:
		回调函数 this
		回调函数:有几个数组元素,回调函数被执行几次
	    参数:item index arr
	    item:每次循环所获取的数组元素
		index:每次循环的数组元素所对应的数组下标
		
		this:
			用来指定回调函数内部的this
myForEach():
	1.声明位置
	2.判断参数个数以及类型
	3.如何循环执行回调函数
	4.回调函数中的this值指向
	
reduce():
	回调函数 this
	回调函数:
		    pre item index arr
		    pre:上一次回调函数执行的返回值
			如果第一次执行时,并且没有设置第二个参数时,pre为数组第一个元素;如果设置了第二个参数,第一次的pre为第二个参数
			this:回调函数中的this
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值