Javascript中的四个用法
当函数被执行时,它总是指向调用函数的对象。
在Javascript语言精华的书中,这一场景分为四类,它们都是简单的:
对象指向调用对象。
没有对象被调用到全局对象。
使用新结构指向一个新对象
通过应用、调用或绑定改变这个手指。
1)当函数属于对象:指向对象时
当一个函数属于一个对象时,函数通常被一个表达式调用,当它自然指向它所属的对象时:
VaR MyObject = { 100 }值;
myobject.getvalue =函数(){
console.log(这个值); / /输出100
输出 / / {价值:100 },{ } GetValue函数,
事实上,对象本身是MyObject / /
console.log(本);
返回this.value;
};
Console.log ((myObject.getValue)); / / = > 100
GetValue()属于对象MyObject,并通过myojbect。电话,所以这个指向对象MyObject。
2)函数不属于对象:指向全局对象。
VaR MyObject = { 100 }值;
myobject.getvalue =函数(){
函数(){()
console.log(这个值) / / = >定义
console.log(本); / /全球输出全局对象
};
(富);
返回this.value;
};
Console.log((MyObject。GetValue)); / / = > 100
在上面的代码块,foo函数在GetValue函数定义的,但事实上它不属于任何GetValue或MyObject。富不受任何对象,所以在调用时,这个指针指向全局对象的全球。
据说这是一个设计错误。
3)构造函数中的这一点:指向一个新对象
在js中,我们通过新关键字调用构造函数,其中绑定到新对象。
Var SomeClass =函数(){()
this.value = 100;
}
无功mycreate =新SomeClass();
console.log(mycreate。值); / /输出100
顺便说一下,在JS中,构造函数,普通函数,对象方法,闭包,四者之间没有明确的界限,边界在人们的心中。
4)应用和调用调用和绑定绑定:指向绑定的对象
应用()方法接受两个参数,第一个参数是函数的函数范围,另一个是参数数组(参数)。
调用()方法的第一个参数与应用()方法相同,但是其他参数需要一一列举。
简言之,调用方法更接近我们通常的调用函数,应用程序要求我们将数组形式传递给它,它们可以相互转换。
VaR MyObject = { 100 }值;
函数(){()
console.log(本);
};
富(全局);全局变量
foo.apply(MyObject); / / { 100 }值:
foo.call(MyObject); / / { 100 }值:
无功newfoo = foo.bind(MyObject);
newfoo(价值); / / { 100 }
这是本文的全部内容,希望大家能喜欢。