码迷,mamicode.com
首页 > 移动开发 > 详细

创建对象的方式以及call,apply,bind的区别

时间:2019-08-17 18:23:56      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:相同   关键字   实参   alc   区别   fun   base   作用   log   

创建对象的方式有四种

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是创建了一个新的函数,但是不立刻执行。

 

创建对象的方式以及call,apply,bind的区别

标签:相同   关键字   实参   alc   区别   fun   base   作用   log   

原文地址:https://www.cnblogs.com/yzxyzx/p/11369272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!