zoukankan      html  css  js  c++  java
  • 创建对象的方式以及call,apply,bind的区别

    创建对象的方式有四种

    1.直接量

    var obj={

    属性名:属性

    方法名:function(){}

    }

    2.通过构造函数创建对象,这样能够批量创建多个具有相同属性的子对象(顺便介绍call,apply,bind三个关键字的区别应用)

    function person(name,age){

    this.name=name;

    this.age=age;

    }

    或者function person2(name,age){

    this.name=argument[0];

    this.age=argument[1];

    }

    第一种方式用call

    functon student(name,age.sex,tel){

    person.call(this,name,age);

    this.sex=sex;

    this.tel=tel;

    }

    call()的作用就是让person中的this的指向全部都改成call中的内容,并且能在里面追加参数

    第二种方式用apply

    functon student(name,age.sex,tel){

    person2.apply(this,[name,age]);

    this.sex=sex;

    this.tel=tel;

    }

    还有第三种方式就是用bind

    例子1:

    function person(name,age){

    this.name=name;

    this.age=age;
    console.log(this.name,this.age)

    }


    var student=person.bind();
    student(9,10);

    例子2:

    function calc(base,bonus){

    console.log(this.ename+"的总工资是"+(base+bonus)

    }

    var lilei ={ename:"li lei"}

    var Lilei=calc.bind(lilei);

    bind其实就是讲旧的函数复制了一份给了新的函数,并且永久绑定this,并且也可以永久绑定参数。

    总结来说call借用别人的方法,完成自己的事情需要把实参按照形参的个数传进去。立刻执行

    apply也是借用别人的方法,但是传递参数是按照数组的方式,需要注意实参跟形参的顺序。也是立刻执行

    bind是创建了一个新的函数,但是不立刻执行。

  • 相关阅读:
    CSS3 动画-- 鼠标移上去,div 会旋转、放大、移动
    jquery 微信端 点击物理返回按钮,弹出提示框
    H5 canvas pc 端米字格 写字板
    【三剑客】awk函数
    【三剑客】awk运算符
    【三剑客】awk命令2
    【三剑客】awk命令
    磁盘
    用户管理
    定时任务Crond
  • 原文地址:https://www.cnblogs.com/yzxyzx/p/11369272.html
Copyright © 2011-2022 走看看