js知识点2

  1. toString()

当我们直接在页面中打印一个对象时,事件上是输出的对象的返回值,如果我们不希望输出[Object Object],可以为对象添加一个toString()方法

function Person((name,age,gender){

   this.name=name;

   this.age=age;

   this.gender=gender;

 this.sayName=function(){

    alert(this.name);

};

}

Person.prototype.toString=function(){

   Return “Person[name=”+this.name+”,age=”+this.age+”,gender=”+this.gender+”]”

}

这个对象类型就是Person

var per=new Person(“孙悟空”,18,”男”);

console.log(per);

  1. 垃圾回收:

Js中有自动垃圾回收机制,我们不需要也不能进行拉进回收,我们只需要将不再使用的对象设置为null

内建对象

  1. 数组的介绍:

数组(Array)数组也是一个对象它和普通的对象功能类似,也是用来存储一些值的,数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据

创建数组对象:

var arr=new Array();

向数组存储元素语法:数组[索引]=值;  arr[0]=10;

获取数组长度:console.log(arr.length);

设置数组的长度arr.length= 10; 若修改的length大于原长度,则多出的部分会空出来,若修改的length小于原来长度,则多余元素会被删除

向数组最后一个位置添加元素:

arr[arr.length] = 70;

数组的4个方法:

var arr=[“孙悟空”,”猪八戒”,”沙和尚”];

push()向数组的末尾添加一个或多个元素,并返回数组新的长度

arr.push(“唐曾”,”蜘蛛精”,”白骨精”);

pop();删除数组的最后一个元素,并将删除的元素返回

arr.pop();

unshift();向数组的开头添加一个或更多元素,并返回新的长度,跟push()相似,只是push是往后加unshift是往前加

shift();删除并返回数组的第一个元素,并将删除的元素返回

arr.shift();

数组的遍历:

运用for循环遍历数组

var arr=[“孙悟空”,”猪八戒”,”沙和尚”,”唐曾”];

for(var i=0;i<arr.length;i++){

   console.log(arr[i]);

}

数组练习:

function Person((name,age){

   this.name=name;

   this.age=age;

 this.sayName=function(){

    alert(this.name);

};

}

//向原型对象toString方法

Person.prototype.toString=function(){

   Return “Person[name=”+this.name+”,age=”+this.age+”,gender=”+this.gender+”]”

}

var per=new Person(“孙悟空”,18);

var per1=new Person(“猪八戒”,28);

var per2=new Person(“红孩儿”,8);

var per3=new Person(“蜘蛛精”,16);

var per4=new Person(“二郎神”,38);

var perArr=[per,per1,per2,per3,per4]

创建一个数组将瞒18岁的对象提取出来

function getAdult(arr){

  var newArr=[];//创建新的数组

  for(var i=0;i<arr.length;i++){

     var p=arr[i];

     if(p.age>=18){

        newArr.push(p);

}

}

}

//调用方法

var result=getAdult(perArr);

console.log(result);

forEach()遍历数组:

var arr=[“孙悟空”,”猪八戒”,”沙和尚”,”唐曾”]

arr.forEach();  IE8以上的浏览器

需要一个函数作为参数,这种函数由我们创建但不是由我们调用的我们称为回调函数

数组中有几个元素函数就会执行几次,每次执行浏览器会将遍历道德元素以实参的形式传递进来,我们可以定义形参,来读取这些内容

浏览器会在回调函数中传递三个参数

第一个参数,就是当前正在遍历的元素

第二个参数,当前正在遍历的元素的索引

第三个元素,就是当前遍历的数组

arr.forEach(function (value,index,obj){

  console.log(value);

});

slice和splice方法

slice(); 从某个已有的数组返回选定的元素,该方法不会改变原数组,而是将截取到的元素封装到一个新的数组中返回

有2个参数:第一个,截取开始的位置,包含起始位置

            第二个,截取结束的位置,不包含结束索引

               第二个参数可以省略不写,此时会截取从开始索引的所有元素

          索引可以传递一个负值,则是从后往前计算

var arr=[“孙悟空”,”猪八戒”,”沙和尚”,”唐曾”]

var result=arr.slice(0,2);

colsole.log(result);

splise();可以用于删除数组中指定的元素,并向数组添加新元素,使用splice()会影响到原数组,会将指定元素从原数组中删除,并将删除的元素作为返回值返回

arr.splice(0,2);

参数:  第一个,表示开始位置索引

        第二个,表示删除的数量

        第三个参数以及以后,可以传递新的元素,这些元素将会自动插入到开始位置索引的前面

var result=arr.splice(0,2);

console.log(arr);

concat()方法

连接两个或更多的数组,并返回结果

var arr=[“白骨精”,”玉兔精”,”蜘蛛精”];

var arr2=[“孙悟空”,”猪八戒”,”沙和尚”];

var arr3=[“二郎神”,”太上老君”,”玉皇大帝”];

var result=arr.concat(arr2,arr3);

console.log(result);

join()方法将数组所有元素放入一个字符串,元素通过指定的分隔符进行分隔,该方法可以将一个数组转换成一个字符串

参数: “-”使用-作为连接符,默认使用 “,”作为连接符

var arr2=[“孙悟空”,”猪八戒”,”沙和尚”];

result=arr.join();

console.log(result);// “孙悟空”,”猪八戒”,”沙和尚”

console.log(type result);//String

reverse()方法

颠倒数组中元素的位置,该方法用于反转数组,该方法会直接修改原数组

Sort()方法

对数组的元素进行排序,也会影响原数组,按照Unicode及编码进行排序,对于纯数字的数组,使用sort()排序时,可能会的到错误的结果,我们可以自己制定规则:我们可以在sort()中添加一个回调函数,浏览器会分别使用数组中的元素作为参数调用回调函数,使用那个元素调用调用不确定,但是肯定的是在数组中a一定在b的前面

  如果返回一个大于0的值,则元素会交换位置

  如果返回一个小于0的数,则元素位置不变

  如果返回0,则元素位置不变

arr =[5,4,3];

arr.sort(function (a,b){

   //前面大

if(a>b){

  return 1;

}else if{

   return -1;

}else{

   return 0;

}

//升序排列,或者直接写

return a-b;

//降序排列

return b-a;

});

Console.log(arr);

函数的方法:

call()和apply()  需要函数对象来调用

函数也是一个对象:

function fun(){

   Alert(“我是fun函数”);

}

fun.call();

fun.apply();

当函数调用call()和apply()都会调用函数执行,在调用的call和apply可以将一个对象指定为第一个参数,可以修改函数执行时的上下文对象

  此时这个对象将会成为函数执行时的this

function fun(){

   Alert(this);

}

this:的情况:

以函数形式调用时,this永远是window  fun();

以方法形式调用时,this是调用方法的对象

以构造函数的形式的形式调用时,this是新创建的那个对象

使用call和apply调用时,this是指定的那个对象

fun();// [Object Window]

var obj={  }

fun.call(obj);//[object Object]

fun.apply(obj);

call方法可以将实参在对象之后依次传递:

function fun(a,b){

    console.log(“a=”+a);

console.log(“b=”+b);

}

fun.call(obj,2,3)

apply()方法需要将实参封装到一个数组中统一传递

fun.apply(obj,[2,3])

arguments参数

调用函数时,,浏览器每次都会传递两个隐含的参数

  1. 函数的上下文对象this 2.封装实参的对象arguments  arguments是一个类数组对象

它可以通过索引来操作数据,也可以获取长度,在调用函数时,我们所传的实参都会在arguments中保存

它里面有一个属性叫做callee,这个属性对应一个对象,就是当前正在执行的函数对象arguments.callee=fun

function fun(a,b){

//判断是否属于数组

//concole.log(arguments instanceof Araay);

//console.log(Arrar.isArray(arguments));

console.log(argument.length);

console.log(argument)

}

fun(“hellow”,true);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值