原生Javascript-2(函数、对象、数组)

对象
	类和对象的概念
	对象创建
		1、var obj=new Object();
		2、var obj={};
		3、var obj=Object.create();
	对象的属性和方法
		delete
		for in 语句遍历对象
函数
	函数基础
		函数声明
		函数调用
		函数的优点
	参数
		实参:真实的数值、字符串
		形参:一个接收实参的变量
	return
	全局变量   就是在script标签下直接使用var定义的变量,全局变量可以应用于所有的代码中调用获取.范围非常大
	局部变量   就是在函数中使用var定义的变量,仅用于当前函数的执行范围内
函数进阶
	为什么使用函数
	函数的声明
		普通函数声明
		匿名函数声明1
		匿名函数声明2
		Function构造函数
	工厂型创建对象
		function Box(){

var box=new Obect();
box.name=“box”
return box
}
函数的执行
普通函数执行
函数的独立执行
函数的删除
匿名函数删除
函数=null
对象下的方法删除
delete obj.fun
函数对象
函数也是对象
函数的属性定义
length
回调函数 参数如果传入的是一个函数名,在当前函数中运行了这个参数,这就是回调
什么是回调
为什么要使用回调函数
如何执行回调函数
递归函数
递归条件
(1)须有完成函数任务的语句。
(2)—个确定是否能避免递归调用的测试
(3)一个递归调用语句。
该递归调用语句的参数应该逐渐逼近不满足条件,以至最后断绝递归。
(4)先测试,后递归调用。
在递归函数定义中,必须先测试,后递归调用。也就是说,递归调用是有条件的,满足了条件后,才可以递归。
递归评价
内存管理
内存分配:当我们申明变量、函数、对象的时候,系统会自动为他们分配内存
内存使用:即读写内存,也就是使用变量、函数等
内存回收:使用完毕,由垃圾回收自动回收不再使用的内存
内存泄漏
垃圾回收机制
构造函数
构造函数
实例化对象
原型对象
显式原型prototype属性
原型内方法地址是否一样
隐式原型__proto__
两者的关系
隐式原型指向创建这个对象的函数(constructor)的prototype
function Box(){

var box=new Box();
box.proto=Box.prototype
isPrototypeOf()
判断一个对象是否指向了该构造函数的原型对象,可以使用isPrototypeOf()方法来测试。
alert(Box.prototype.isPrototypeOf(box));//只要实例化对象,即都会指向
原型模式的执行流程
1、先查找构造函数实例里的属性和方法,如果有,立刻返回;
2、如果构造函数实例里没有,则去它的原型对象里找,如果有,就返回;
动态属性和静态属性
constructor
获取
var o=new Object();
o.constructor
Object
var arr=new Array(1,2,3);
arr.constructorArray
var n=new Number()
n.constructor
Number
function Box(){
}
var box=new Box();
box.constructorObject
function Box(){
}
Box.prototype.constructor=Box;
var box=new Box();
box.constructor
Box
设置
Box.prototype.constructor=Box
设置类的原型指针,被实力化的对象可以通过指针找到该对象继承的类
this
普通函数中的this
类中的this
数组
数组基础
创建数组
①创建字面量数组
var arr=[1,2,3,4,5];//字面量创建
创建数组对象
new Array();
new Array(size);
new Array(element0, element1, …, elementn);
②var arr2=new Array(1,2,3,4);//构造函数创建;
根据对象创建数组
var arr=new Object([])
③var arr1=new Object([1,2,3,4]);//对象构造函数创建
访问元素
arr[0],arr[1]
数组的属性
length 设置或返回数组中元素的数目。数组的长度,是可以设置的
length也是可以设置的,如果设置为0,表示清空数组,如果设置为3,表示保留到第三位
数组的方法
concat()把一个数组和另一个数组拼接在一起 返回拼接好的数组
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop()删除数组的末尾项 返回值是删除的数组项
push()向数组的末尾增加一项 返回值是数组的新长度
reverse()倒序数组 返回值倒序数组 原有数组改变
shift() 删除原数组开头,并返回删除元素的值;如果数组为空则返回undefined
unshift()向数组开头增加一项 返回值是数组的新长度 不常用
slice()复制数组 返回值是复制到的新数组 写上数值之后 不包含被复制的最后一项
splice()删除数组中的任意项 返回值是被删除的数组项
sort()根据匿名函数进行冒泡排序 b-a倒序 a-b升序
some() 对数组的每个元素判断是否满足条件,如果都不满足就返回false,如果有一个满足的就返回true,并且不再判断后面的内容
every() 对数组的每个元素判断是否满足条件,如果有一个不满足条件就返回为false,全部满足时返回true
var arr=[1,2,3,4,5,6,7];
console.log(arr.every(function (elem) {
return elem>0
}));
reduce() 方法对累计器和数组中的每个元素(从左到右)应用一个函数,将其简化为单个值。
var arr=[1,2,3,4,5,6,7];
console.log(arr.reduce(function (sum,elem) {
return sum+elem;
}));
filter()方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
var arr=[1,2,3,4,5,6,7];
console.log(arr.filter(function (elem) {
return elem>5;
}));
indexOf()
第一个参数为要查找的元素 可以根据第二个参数的起始位置开始查找,
返回查找到元素的下标,如果没有找到返回-1
var arr=[1,2,3,4,5,6,2,3,10,2];
console.log(arr.lastIndexOf(2));//从后向前搜索,查找到元素的下标返回
lastIndexOf():接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
遍历数组
forEach遍历当前数组,没有返回值,不会返回新数组 默认返回为undefined
map遍历当前数组,并且将当前数组中的元素返回给新数组,不使用return时, 新数组的长度与原数组相同,但是每个元素都是undefined; 参数是一个匿名函数
参数
参数如果写在所有参数的最前面,那就是必要参数
* ES5中所有的参数一般都需要按位填写,如果没有填写,就会变成undefined
* 多填进入的参数值不会被直接获取到
函数中的call和apply
函数call以后替代执行的this
call
apply
函数的绑定
bind(对象)
arguments对象
二维数组
对象数组
var arr=[{a:3,b:4},{a:5,b:6}]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值