// 当一个函数被保存为对象的一个属性时 -- 方法调用,当一个方法被调用时,this 被绑定到该对象
var myObejct = {
value:0,
increments:function(inc) {
this.value += typeof inc === 'number' ? inc : 1 ;
}
}
myObejct.increments(); //1
myObejct.increments(2);//2
// 当一个函数并非一个对象的属性,那么它就是被当作一个函数来调用的, 在此模式中,this 被绑定到全局对象
var sum = add(3,4) //sum:7
// 给 myObject 添加一个 double 方法
myObejct.double = function() {
var that = this;// 解决 this 指向问题
var helper = function() {
this.value = add(that.value,that.value);
};
helper()// 以函数的形式调用 helper
}
// 以方法的形式调用 double
myObejct.double();
// 如果一个函数前面带上 new 来调用,那么背地里将会创建一个链接到该函数的 prototype 成员的新对象,同时,this 会被绑定到那个新对象上
var Qun = function(string) {
this.status = string;
}
// 给 Qun 的所有实例提供一个名为 get_status 的公共方法
Qun.prototype.get_status = function() {
return this.value;
}
// 构造一个 Qun 实例
var myQun = new Qun('confused'); //confused
// apply 方法构建一个参数数组传递给调用函数,允许选择 this 的值,apply 方法接受两个参数,第一个是要绑定给 this 的值,第二个事参数数组
var array = [3,4];
var sum = add.apply(null,array); //7
var statusObejct = {
status:'a-ok'
}
// statusObejct 并没有继承自 Qun.prototype,但可以在 statusObject 上调用 get_status 方法,尽管 statusObject 并没有一个名为 get_status 的方法
var status = Qun.prototype.get_status.apply(statusObejct); //'a-ok'
- /*js的四种调用模式:
- 方法调用;
- 函数调用;
- 构造器调用;
- apply调用;*/
- //当一个函数被保存为对象的一个属性时--方法调用,当一个方法被调用时,this被绑定到该对象
- var myObejct ={
- value:0,
- increments:function(inc){
- this.value+=typeof inc ==='number'? inc:1;
- }
- }
- myObejct.increments();//1
- myObejct.increments(2);//2
- // 当一个函数并非一个对象的属性,那么它就是被当作一个函数来调用的,在此模式中,this被绑定到全局对象
- var sum =add(3,4)//sum:7
- // 给myObject添加一个double方法
- myObejct.double=function(){
- var that =this;//解决this指向问题
- var helper =function(){
- this.value=add(that.value, that.value);
- };
- helper()//以函数的形式调用helper
- }
- // 以方法的形式调用double
- myObejct.double();
- // 如果一个函数前面带上new来调用,那么背地里将会创建一个链接到该函数的prototype成员的新对象,同时,this会被绑定到那个新对象上
- varQun=function(string){
- this.status =string;
- }
- // 给Qun的所有实例提供一个名为get_status的公共方法
- Qun.prototype.get_status =function(){
- returnthis.value;
- }
- //构造一个Qun实例
- var myQun =newQun('confused');//confused
- // apply方法构建一个参数数组传递给调用函数,允许选择this的值,apply方法接受两个参数,第一个是要绑定给this的值,第二个事参数数组
- var array =[3,4];
- var sum =add.apply(null, array);//7
- var statusObejct ={
- status:'a-ok'
- }
- // statusObejct并没有继承自Qun.prototype,但可以在statusObject上调用get_status方法,尽管statusObject并没有一个名为get_status的方法
- var status =Qun.prototype.get_status.apply(statusObejct);//'a-ok'
来源: http://www.qdfuns.com/notes/13740/c0052a49bbe1304073c85f3a11d218f4.html