创建对象的方式以及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的区别的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中的apply()call()bind()