js的四种调用以及this指向

原创 onlyclover 随笔 个人笔记 247阅读 2018-01-03 13:10:08 举报

/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会被绑定到那个新对象上

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'

javascript 代码

评论 ( 1 )
最新评论
czp704571044 2018-01-11 14:50:13 1F

曾经看到过别人怎么介绍this的,就是永远指向调用的this的对象