尚硅谷最新版JavaScript基础全套教程完整版(p66-p78)

尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通)

一、原型对象
1.原型(prototype)
-我们所创建的每一个函数,解析器都会向函数中添加一个属性,叫做prototype
-这个属性对应了一个对象,这个对象就是我们所谓的原型对象。
-如果函数作为普通函数调用prototype,那么prototype没有任何作用。如果函数作为构造函数调用prototype,它所创建的对象中都会有一个隐含的属性指向该构造函数的原型对象,我们可以通过下划线("_proto _")来访问该属性
2.原型对象
-原型对象就相当于一个公共的区域,所有同一类的实例都可以访问这个对象,我们可以将对象中共有的内容,统一设置到原型对象中
-当我们访问一个对象的属性或方法时,它首先是向对象自身中寻找,如果有则直接使用,如果没有则向原型对象中寻找,如果找到也可以使用。
-所以我们可以将类中共有的方法和属性添加到原型对象中。
3.hasOwnProperty方法
-使用in检查对象中是否含有某个属性,如果对象中没有,但对象的原型对象中有,也会得到一个true
-可以使用对象的hasOwnProperty来检查对象自身中是否含有该属性,使用该方法,只有当对象自身中含有该属性时才会返回true。
4.原型对象也有原型
-当我们访问一个对象的属性或方法时,它首先是向对象自身中寻找,如果有则直接使用,如果没有则向原型对象中寻找,如果找到也可以使用,如果没有,则去原型的原型中寻找。
如果原型的原型中没有找到,则返回undefined。

二、tostring()
1.tostring方法
-当我们在页面中打印一个对象时,实际上输出的是对象的tostring方法的返回值
-如果我们希望在输出对象时不输出[object , object],可以为对象添加tostring()方法
2.修改person()原型的tostring
-Person.prototype.tostring = function(){ return …
}
这样可以在输出对象时,改变打印的结果,不再输出[object , object]

三、垃圾回收(GC)
1.概念
-程序运行过程中,会产生垃圾,垃圾积攒过多以后,会导致程序运行的速度慢,所以我们需要一个垃圾回收的机制,来处理程序运行过程中产生的垃圾。
-当一个对象没有任何的变量或属性对它进行引用,我们将永远无法操作该对象,此时这个对象就是一个垃圾,这种对象过多回占用大量的内存空间,导致程序的运行变慢,所以这种垃圾我们必须进行清理

2.垃圾回收
-在JS中,拥有自动的垃圾回收机制,会自动将这些垃圾对象从内存中销毁,我们不需要也不能进行这种垃圾回收的操作。
-我们需要做的是将不再需要使用的对象设置为null

四、内建对象(数组简介)
·1.数组(Array)
-数组也是一个对象,它和我们普通的对象功能类似,也是用来存储一些数据的
-不同的是普通对象是使用字符串作为属性名,而数组是使用数字作为索引操作元素(属性)
-数组的存储性能比普通对象要好,所以在开发中经常使用数组来存储一些数据
-使用type of检查一个数组时,会返回object
2.索引(Index)
-从0开始的整数就是索引
3.创建数组对象
-var arr = new Array();
4.向数组中添加元素
-语法 数组[索引]=值
-arr[0]=10
5.读取数组中的元素
语法: 数组[索引]
-如果读取不存在的元素,不会报错而是会返回一个undefined。
6.获取数组的长度
-对于连续的数组,可以使用length属性获得数组的长度(也就是元素的个数)
-对于非连续的数组,它会使用length获取到数组的最大索引+1 , 尽量不要创建这种非连续的数组
-length可以修改,如果我们修改length后大于原长度,则多出的部分会空出来, 如果我们修改length后的长度小于原长度,则多出的元素会被删除
7.永远向数组的最后一个位置添加元素
-数组[数组.length] = 值 因为这个length就是索引最大值+1 也就是最后一个索引的位置

五、数组字面量
1.使用字面量创建数组
-var arr = 【0,1,2,3,4,5,6,7,8】;
-使用字面量创建数组,在创建时就可以指定数组中的元素
2.使用构造函数创建数组
-var arr = new Array(0,1,2);
-我们可以将要添加的元素作为构造函数的参数传递,参数之间需要用逗号隔开
3.不同点

  • var arr = 【10】 创建一个数组,数组中只有一个元素10
    -var arr = new Array(10); 创建一个长度为10的数组
    4.我们数组中的元素可以是任意的数据类型
    -arry【“Hello”,1,true,null,undefined】
    -数组中的元素也可以是对象 例子: arry[{name:“孙悟空”},{name:“猪八戒”},{name:“沙和尚”}];
    -数组中的元素可以是函数 例子: arry[function(){alert(1)},function(){ alert(2)}];
    -数组中也可以放数组 ,这种数组我们叫做二维数组 例子:arry[[1,2,3,],[1,2,3],[4,5,6]]

六、数组的四个方法
1.push()
-该方法可以向数组的末尾添加一个或多个元素,并返回数组新的长度(该方法会将新数组长度作为返回值返回)
-我们可以将需要添加的元素作为方法的参数传递,这些元素将会自动添加到数组的末尾

2.pop()
-该方法可以删除我们数组的最后一个元素,并将被删除的元素作为返回值返回

3.unshift()
-该方法可以向数组的开头添加一个或更多元素,并返回新的长度。
-向前边插入元素以后,其他元素的索引会依次调整

4.shift()
-该方法可以删除数组的第一个元素,并将被删除的元素作为返回值返回

七、数组的遍历
1.定义
-所谓的数组的遍历,就是将数组中所有的元素都取出来。
2.方法
例: for(i=0 ; i<数组.length;i++){
console.log(数组[i]);
}
p74的练习,将一个数组中符合条件的对象添加到新的数组中

八、forEach方法
1.forEach()
-一般我们都是使用for循环去遍历数组,JS中还为我们提供了一个forEach()方法用来遍历数组
-这个方法只支持IE8以上的浏览器
-forEach()方法需要一个函数作为参数,数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素以实参的形式传递进来,我们可以定义形参来读取这些内容。
例: arr.forEach(function(value , index ,obj){ 语句 …})
2.浏览器会在回调函数中传递三个参数
-由我们创建但是不是由我们调用的函数,比如这种函数,就叫做回调函数
-第一个参数,就是我们当前正在遍历的元素
-第二个参数,就是当前正在遍历的元素的索引
-第三个参数,就是我们正在遍历的数组

九、数组的方法
1.slice()
-此方法可以用来从数组中提取指定元素,该方法不会改变原数组,而是会封装到一个新的数组中保存。
-参数 :
第一个参数:截取开始的位置的索引(包含开始索引)
第二个参数:截取结束的位置的索引(不包含结束索引),第二个参数可以不写。
-索引可以传递一个负值,如果传递一个负值,则从后往前计算(-1倒数第一个,-2倒数第二个)

2.splice()方法
-可以用于删除数组中的指定元素
-使用splice方法会影响到原数组,会将指定元素从原数组中删除,并将删除的元素作为返回值返回
参数:
第一个参数:表示开始删除的位置的索引
第二个参数:表示删除的数量
第三个及以后的参数:可以传新的参数,这些元素将会自动插入到删除元素的位置

3.concat()方法
-该方法可以连接两个或多个数组,并将新的数组返回,该方法不会对原数组产生影响

4.join()方法
-该方法可以将一个数组转换为字符串,该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回
-在join中,可以指定一个字符串作为参数,这个字符串将会称为数组中元素的连接符,如果不指定连接符,则默认使用逗号作为连接符

5.reverse()方法
-该方法用来反转数组的顺序,该方法会直接修改原数组

6.sort()方法
-可以用来对数组中的元素进行排序,该方法也会修改原数组
-这个方法默认按照Unicode编码进行排序
-即使对于纯数字的数组,对数组进行排序,也会按照Unicode编码按照排序,所以对数字进行排序时,可能也会获得错误的结果。
-我们可以直接指定排序的顺序,我们可以在sort()方法中添加一个回调函数,来指定排序规则,在回调函数中需要定义两个参数,浏览器会分别使用数组中的元素作为实参去调用回调函数。使用哪个元素调用不确定,但是在数组中,a的实参一定在b的实参前面。
-浏览器会根据回调函数的返回值,来决定元素的顺序,如果返回一个大于0的值,则元素会交换位置,如果返回一个小于0 的值,则元素位置不变,如果返回一个0,则认为两个元素相等,相等也不交换位置
例: arr.sort(function(a,b){
// if(a>b){
// return 1;
// }else if(a<b){
// return -1;
// }else{
// return 0;
// }
return a-b;//这也是一个升序排列

    })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值