一、考核总结
有一个没有学习到的知识点
改变this指向的方法:
1.call方法
让函数调用call方法同时把this改变为需要改变指向的函数
例:
function fn(name,age){
this.nmae=name;
this.age=age;
}
var obj={}
//利用call方法改变指向
fn.call(obj,"zyj",19);
//以下的this,均指向window,name:undefined,age:undefined
fn.call()
fn.call(null)
fn.call(undefinded)
2.apply方法
语法:函数名.apply(调用者,[参数])
function fn(name,age){
this.name=name;
this.age=age;
}
var obj={}
//使用apply方法
fn.apply(obj,["zyj",19]);
//一下this指向window,name:undefined,age:undefined
fn.apply();
fn.aaply(null);
fn.apply(undefined);
3.bind方法
function fn(name,age){
this.name=name;
this.age=age;
}
var obj={}
//使用bind方法
fn.bind(obj,"zyj",19)()
总结:三者都是改变this的指向
但是不同的是call和apply是直接执行函数调用。bind是绑定,执行需要再次调用
call和bind是用逗号隔开而apply是作为数组接受变量
js中数组有哪些方法(忘完了)
我总结了一些常用的数组的方法:
1)添加删除元素
push(参数...):末尾添加一个或者多个元素,注意修改原数组,并返回新数组的长度
pop:删除数组的最后一个元素,把数组长度减1,无参数、修改原始数组,并返回删除元素的值
unshift(参数...):在数组的开头添加元素,修改数组长度,返回新数组长度
shift():删除数组的第一个元素,无参数,数组长度减一,修改原数组,返回第一个元素的值
2)数组排序
reverse():颠倒数组中元素的顺序无参数,该变了原数组,并返回新数组
sort():对数组元素进行排序,该变了原数组,并返回新数组
用它可以实现冒泡排序,代码如下:
//冒泡排序
var arr1 = [2, 8, 100, 9, 28];
/*由于他只会给个位数字进行排序所以,进行改进,是一个固定格式*/
arr1.sort(function(a, b) {
// return (a - b); //升序排序
return (b - a); //降序排序
});
console.log(arr1);
3)数组索引
index Of():查找给定元素的第一个索引,如果存在反回索引号,否则返回-1
LastIndexOf():在数组中的最后一个索引,如果存在反回索引号,否则返回-1
4)数组向字符串转换
toString():把数组转换成字符串,逗号分隔每一项,并返回一个字符串
join('分隔符'):方法用于把数组中的所有元素转化为一个字符串,返回一个字符串
二、JS高级学习总结
(1)js高级比较重要的就是对象创建方法和继承模式,改变this指向
对象创建方式今天考核也有考到
大致是以下几种
笔记中有忘记了记得去翻看
继承模式:
原型继承(继承方法)
构造函数继承(继承属性)
原型相同继承
组合继承{
构造函数加原型
原型相同加原型
}
代码演示笔记中有,记得翻看
(2)还有就是原型链,作用域链,作用域和执行上下文之间的区别需要分清不要混淆;
笔记中都有具体内容,要及时复习