AI智能
改变未来

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(‘指向’,参数’’),不会立即调用函数

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » JS高级语法基础(二)