JS高级语法基础(二)

文章目录

  • 继承 call()
    • 借用构造函数继承父类属性:组合继承
    • 借用原型对象继承父类方法
    • es5中的新增方法
      • 数组方法
      • 字符串方法
      • 对象方法
  • 函数的定义
  • 函数的调用
  • 关于this
    • 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(‘指向’,参数’’),不会立即调用函数

你可能感兴趣的:(笔记,javascript)