文章目录
- 继承 call()
- 借用构造函数继承父类属性:组合继承
- 借用原型对象继承父类方法
- es5中的新增方法
- 数组方法
- 字符串方法
- 对象方法
- this指向
- 改变this指向
继承 call()
call()的作用:
1、调用函数:
比如fn()与fn.call()等价
2、修改this指向:
比如fn.call(o)将this的指向改为指向对象o
3、传递参数:
比如fn(o,x,y)中,x和y就是传递给fn的实参
借用构造函数继承父类属性:组合继承
function Son(uname,age){Father.call(this,uname,age);//this指构造函数的this实例,即new Son()}
借用原型对象继承父类方法
var obj = new Fn();obj.prototype = {constructor: Fn};//可以直接将一个实例对象赋值给原型对象,但会覆盖原来的原型对象,所以必须使constuctor指向原来的构造函数
es5中的新增方法
数组方法
在数组中,对数组进行迭代(遍历)的方法有:forEach()、map()、filter()、some()、every()。
array.forEach(function(current,index,arr){});//其中,current指当前的值,index是索引,arr指向数组对象本身arrar.filter(function(current,index,arr){});//过滤器,用来帅选数值,例如return current >= 10等条件arr.some(function(current,index,arr){});//查找是否含有特定元素,返回一个布尔值,并且在找到第一个满足条件的元素时就停止遍历
forEach()和some()的区别就是前者需要完全遍历,而后者满足条件就停止,效率更高。
字符串方法
trim()方法,主要作用是删除字符串两端的空白字符,比如搜索框输入验证。
对象方法
1、Object.keys()—>获取对象自身所有的属性,返回属性名组成的数组;
2、Object.defineProperty(obj,‘property’,{})—>定义新的属性或者修改原来的属性。其中,obj表示要操作的对象;property表示要增加或者修改的属性;{}包含的内容那个是属性的内容,它又包含了4个参数:value——值;writable——是否可以重写;enumerable——是否允许遍历;configerable——是否可以被删除,以及特性是否可以被修改,即writable、enumerable是否可以重新定义为true | false。
函数的定义
function fn(){};new Function(\'参数\',{函数体});
函数的调用
fn();fn.call();//普通函数的调用//--------------------class Fn(){fn: function(){}};Fn().fn;//对象//--------------------function Fn{};new Fn();//构造函数//--------------------btn.onclick = function(){};//绑定事件//--------------------setInterval(fn,timeout);//定时器函数//--------------------(fn(){})();//立即执行函数的调用
关于this
this指向
1、普通函数——window
2、对象方法——对象
3、构造函数——实例对象
4、绑定事件——绑定事件对象
5、定时器函数——window
6、立即执行函数——window
改变this指向
1、call——>fn.call(‘指向’,‘参数’);
2、apply——>fn.apply(‘指向’,’[参数]’),调用函数改变this指向,还可以利用数学内置对象求最大值,比如:Math.max.apply(null,arr)。
3、bind——>fn.bind(‘指向’,参数’’),不会立即调用函数