创建对象的方式有四种
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是创建了一个新的函数,但是不立刻执行。
原文地址:https://www.cnblogs.com/yzxyzx/p/11369272.html