学习笔记第二周

原型链

没有该属性,则去原型对象去寻找,有则使用,如果原型对象中没有该属性,则去原型的原型去找,原型的原型就是object对象的原型,object对象的原型没有原型,如果在object原型对象中没有找到该属性,则返回undefined,object对象原型的原型的值为null。

tostring方法的返回值

创建实例对象在(“参数”),当我们直接在页面中打印一个对象时,实际上输出的是tostring方法的返回值,对象名.tostring 和对象名打印结果是一样的,tostring属性在原型的原型中找到,输出属性时自动寻找属性,需要不断加__.proto__寻找到原型的原型直到找到该属性,

修改原型对象的tostring

obj对象指向堆内存中的地址

 

per .tostring=function(){

return “ "name" +this.name+",age="+this.age+",gender=" +this.gender ”

}

将返回值赋值给per实例对象的tostring属性

垃圾回收---GC

定期清理垃圾

程序运行过程中也会产生垃圾,垃圾积攒过多会导致程序运行速度过慢,所以我们需要垃圾回收机制来处理产生的垃圾,对对象进行各种操作,obj=null;

链接断开,该对象没有任何的变量、属性去对它引用,此时我们将无法操作该对象,此时的对象就是一个垃圾,这种对象空间过多,会占用大量空间,导致运行速度变慢,需要清理,链接断了?如何清理,js有自动的垃圾回收机制,自动将垃圾对象自动从内存销毁,我们不需要也不能进行垃圾回收的操作。还有变量在引用,需要obj=null,将不在使用的对象设置为null即可

对象分为三种,内建对象,宿主对象,自定义对象,主要用前两个,后一个用于高级开发,浏览器定义的前两个,内建对象:es标准定义的对象,比如function,object,是浏览器定义的自定义对象

数组(array)

----数组也是一个内建对象,一切都是对象,和普通对象类似,也是用来存储一些值的,不同的是普通对象是使用字符串作为属性名的,

如obj.name="hhhh"而数组是使用数字作为索引操作元素,注意这里的属性和元素是一样的

普通对象:

属性名 属性值

数组:

索引 元素值

索引:从0开始的一个整数

0 “hhh”

索引+元素值=一个元素

数组的存储性能比普通对象好,经常使用数组来储存一些数据

创建

面向对象:创建对象,操作对象

构造数组对象

var arr =new Array()

Array()是数组构造函数

consle.log(typeof arr)---object

使用typeof检查一个数组时会返回object

操作数组对象

向数组中添加元素

语法:数组[索引]=值

arr[0]=10;

consle.log(arr)---打印10

arr[1]=20

consle.log(arr)---打印10,20

读取数组中的元素

语法:数组【索引】

arr[0]-----10

如果读取不存在的索引返回undefined,不报错

数组读取 

 

数组长度

数组对象方法:

1.查询数组长度,元素个数

可以使用length属性

数组.length;

arr.length;

连续数组可以获得获取数组长度,

不连续数组,length会获得数组的最大下标加1

输出整个数组

consle.log(数组名)

非连续数组会空出位置,尽量不要创建非连续数组

length能返回和设置数组长度

arr.length=10;

如果修改的数组长度(length)大于原长度,会空位置

小于原长度:多出的元素会被删除

通过length获得最大索引值,添加元素

索引过大,像数组最后一个位置添加元素,比最大索引大一,通过length获得最大索引值

length等于最大索引加1

记得要加上数组对象名,要不然会到全局寻找length属性

语法:数组名【数组名.length】=值;

数组存储属性用索引,不用属性名

数组对象和普通对象没有太大的差别,数组对象也能用字符串来命名属性,只是说这样的意义不大

返回length 

 修改length

利用length属性不断向数组添加值,且此时的数组必定连续 

数组创建

使用字面量来创建数组

var arr =[ ];

使用typeof检查一个数组时会返回object

语法:var arr =[ ]; 元素之间使用逗号隔开

使用字面量创建数组时,可以在创建时就指定数组中的元素

var arr=[1,2,3];

使用构造函数var arr=new Array(1,2,3)的结果是一样的,使用构造函数创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数传递,元素之间使用逗号隔开

区别:arr[10]代表数组第一个元素是10

new Array(10),代表长度为10的数组,一般不适用构建函数来创建数组,使用字面量

数组元素可以是任意的数据类型,也可以是对象,

arr[arr.length]={name:"孙悟空"};元素之间用逗号隔开

arr[1].name---调用数组元素—》对象的name属性

数组中的数据也可以是函数

arr=[function(){alert(1)},function(){alert(2)}];

想调用数组中的元素-函数语法:arr[0]();加一个括号

函数也是一个对象

arr=[[1,2,3],[2,3,4]];

数组中放数组,

显示arr[0],这种数组被叫做二维数组

引申到三维数组,多维数组

数组对象和普通对象没有太大的差别,数组对象也能用字符串来命名属性,只是说这样的意义不大

数据对象中的数据类型可以是任意的,可以是对象,但是直接打印出来时默认tostring方法的返回值

 

元素之间用逗号隔开

arr[1].name---调用数组元素—》对象的name属性

数组中的数据也可以是函数

 

 数组中放数组

数组的四种方法

数组的四种方法

创建一个数组

var arr = [ " jjj " ," kkk" "lllll" ];

1.push

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

要添加的元素作为方法的参数进行传递,这些元素自动添加到数组末尾,多个参数用逗号隔开

方法返回值为数组新长度

arr.push("hhahahha","jjjj");

result=arr.push("hhahahha","jjjj")=2

2.pop

删除并返回数组的最后一个元素

方法的用法

数组名.方法名()

arr.pop()

3.unshift,与push插入顺序相反,

向数组开头添加一个或多个元素并返回数组的新的长度,添加后,其他元素索引会依次调整

4.shift()

删除删除数组的第一个元素,并将删除的元素作为返回值返回

1.push

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

要添加的元素作为方法的参数进行传递,这些元素自动添加到数组末尾,多个参数用逗号隔开

方法返回值为数组新长度

 2.pop

删除并返回数组的最后一个元素

方法的用法

数组名.方法名()

arr.pop()

 3.

unshift()方法

向数组开头添加一个或多个元素并返回数组的新的长度

4.shift()

删除删除数组的第一个元素,并将删除的元素作为返回值返回

 person 构造函数

创建多个person对象,存入数组中 

方法的用法

数组名.方法名()

数组的遍历

创建一个数组

var arr = [ " jjj " ," kkk" "lllll" ];

遍历就是将所有元素取出来

consle.log(arr[0])

consle.log(arr[1])

关键是获取数组索引

for循环:正好length比最大索引大一

for (var i=0;i<length;i++)

{ consle.log(arr[i]) }

一般使用for循环遍历数组,js还提供了forEach方法

这个方法只支持IE8的浏览器

forEach需要一个函数作为参数,函数名字就好了,不要加()或者直接把整个函数写进去,比如匿名函数

arr.foreach(function(){

consle.log("hello");

}

)

这种函数虽然由我们创建,但是由浏览器调用,我们称之为回调函数

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

浏览器将会遍历到的元素,以实参的形式传进来,我们定义形参,读取该内容,浏览器会在回调函数传递三个参数,1.当前正在遍历的元素,2.当前遍历的元素的索引(index)3.就是正在遍历的数组对象(obj)

arr.foreach(function(a){

consle.log(a);

}

)

 

数组的另外两个方法

slice () splice()

slice ()

从某个已有的数组返回选定元素

可以提取出指定元素

语法:数组对象名.slice(start,end)

起始索引,结束索引,包含起始索引,不包括结束索引

该方法不会改变原数组,而是将截取的元素封装到新数组,该方法返回值是数组

第二个参数可以省略不写,即截取到最后一个元素

索引可以传递一个负值

-1表示倒数第一个元素,传递一个负值,表示从后往前读

splice()

删除元素,并且添加新元素

会影响到原数组,会将指定元素删除并且作为返回值返回

参数1表示开始位置索引,参数2表示删除数量

splice(1,0)表示没删

参数3及以后,可以传递新的元素,将会自动插入开始位置索引前面,

参数2为0,直接在开始位置索引前添加新元素

 

slice()方法

 

splice()方法

 

数组去重,去除连续重复的元素

contact()方法

join()

 

reverse()

 

sort()

 

 

 

 

 

 

call apply

 

 

arguments

 

 

date对象 

 

年份写完整,避免歧义

getdate() getday()

 

 

getMonth()

 

获取完整年份

时间戳

 

Math

 

取整

 

四舍五入取整

 

 

 生成指定范围随机数

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值