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

Posted yzxyzx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建对象的方式以及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是创建了一个新的函数,但是不立刻执行。

 

以上是关于创建对象的方式以及call,apply,bind的区别的主要内容,如果未能解决你的问题,请参考以下文章

面试必问之原型链与继承以及call/bind/apply

谈谈call(), apply(), bind()的异同

JavaScript中的apply()call()bind()

apply,call,bind

call() apply() bind()方法 以及实现bind()方法

js call 以及apply