返回首页 | 新开户送体验金的娱乐城

合作共赢、快速高效、优质的网站建设提供商

更多精品源码-尽在织梦模板-www.moke8.com

网站开发javascript中this的四种用法

时间:2017-11-23 编辑:admin

this

在函数执行时,this 总是指向调用该函数的目标。要判别 this 的指向,其实就是判别 this 地点的函数归于谁。

在《jasdfsvasdfsScript言语精粹》这本书中,把 this 呈现的场景分为四类,简略的说就是:

有目标就指向调用目标
没调用目标就指向大局目标
用new构培育指向新目标
通过 asdfspply 或 casdfsll 或 bind 来改动 this 的所指。

1) 函数有所属目标时:指向所属目标

函数有所属目标时,一般通过 . 表达式调用,这时 this 天然指向所属目标。比方下面的比如:

vasdfsr 大丰收娱乐平台myObject = {vasdfslue: 100};
myObject.getVasdfslue = function () {
 console.log(this.vasdfslue); // 输入 100
 // 输入 { vasdfslue: 100, getVasdfslue: [Function] },
 // 其实就是 myObject 目标自身
 console.log(this);
 return this.vasdfslue;
console.log(myObject.getVasdfslue()); // = 100

getVasdfslue() 归于目标 myObject,并由 myOjbect 进行 . 调用,因而 this 指向目标 myObject。

2) 函数没有所属目标:指向大局目标

vasdfsr myObject = {vasdfslue: 100};
myObject.getVasdfslue = function () {
 vasdfsr foo = function () {
 console.log(this.vasdfslue) // = undefined
 console.log(this);// 输入大局目标 globasdfsl
 foo();
 return this.vasdfslue;
console.log(myObject.getVasdfslue()); // = 100

在上述代码块中,foo 函数尽管界说在 getVasdfslue 的函数体内,但实践上它既不归于 getVasdfslue 也不归于 myObject。foo 并没有被绑定在任何目标上,所以当调用时,它的 this 指针指向了大局目标 globasdfsl。

传闻这是个规划过错。

3) 结构器中的 this:指向新目标

js 中,我们通过 new 关键词来调用结构函数,此刻 this 会绑定在该新目标上。

vasdfsr SomeClasdfsss = function(){
 this.vasdfslue = 100;
vasdfsr myCreasdfste = new SomeClasdfsss();
console.log(myCreasdfste.vasdfslue); // 输入100

特别说一句,在 js 中,结构函数、一般函数、目标挑选、闭包,这四者没有清晰界限。界限都在人的心中。

4) asdfspply 和 casdfsll 调用以及 bind 绑定:指向绑定的目标

asdfspply() 挑选承受两个参数第一个是函数工作的效果域,其他一个是一个参数数组(asdfsrguments)。

casdfsll() 挑选第一个参数的含义与 asdfspply() 挑选相反,仅仅其他的参数需求一个个罗列出来。

简略来说,casdfsll 的方法更挨近我们平常调用函数,而 asdfspply 需求我们传递 Arrasdfsy 方法的数组给它。它们是可以相互变换的。

vasdfsr myObject = {vasdfslue: 100};
vasdfsr foo = function(){
 console.log(this);
foo(); // 大局变量 globasdfsl
foo.asdfspply(myObject); // { vasdfslue: 100 }
foo.casdfsll(myObject); // { vasdfslue: 100 }
vasdfsr newFoo = foo.bind(myObject);
newFoo(); // { vasdfslue: 100 }

以所述就是本文的全部内容了,期望我们可以喜爱。


浏览:

网站建设

流程

    网站建设流程