当前位置:首页 > 日记 > 正文

学习Javascript的这个关键字与我

学习Javascript的这个关键字与我
本文仅讨论这个问题。如果我们能正确地回答Javascript中的这个问题,作为一个作者,我会觉得写这样的文章是值得的。

让我们记住一个词:它总是指向函数运行的对象,它不是创建函数时创建的对象,也就是说,谁调用,指向谁…

本文将分为三个案例来分析这个对象到底在哪里。

1,在普通函数中

不管这个位置在哪里,第一件要做的事情是在函数运行时找到函数的位置。

全局;
功能getName(){
var;
返回this.name;
};
警报(getName());
当这出现在全球环境的函数的函数GetName getName,此时的位置是在位置

警报(getName());
显然,这同对象的函数是全局对象,即窗口,所以这会躲在窗口。在这一点上,这个点的窗口对象,并返回的this.name getName实际上是window.name,所以提醒了世界!

然后,当它不出现在全局环境的函数中时,当它出现在本地环境的函数中时,它将被困在什么地方呢
全局;
VaR XPG = {
名称:本地
getName:函数(){
返回this.name;
}
};
警报(xpg.getname());
该功能不在全球环境中,但在XPG环境。无论你在这,一定要找到位置的功能函数时运行,功能同此时的位置
警报(xpg.getname());
显然,getName的目标函数,XPG,所以这将遮蔽XPG,它指向一个对象的this.name XPG getName返回xpg.name,所以警惕的地方!

举例巩固。

var某人{ {
姓名:鲍勃
showName:函数(){
警报(这个名字);
}
};

var
姓名:汤姆
someone.showname showName:
}

other.showname(); / /汤姆

虽然这个关键字声明someone.showname,它运行在other.showname,所以这一点要other.showname功能,当前对象即其他,所以最后提醒出来other.name。

2,这在闭包中

关闭也是一个令人不安的因素。这篇文章谈得不多。简言之,所谓闭包就是在函数内部创建另一个函数,内部函数访问外部变量。

浪子和痞子关闭混合在一起,将永无宁日。啊啊啊啊啊!
全局;
VaR XPG = {
名称:本地
getName:函数(){
返回函数(){
返回this.name;
};
}
};
警报(xpg.getname()());
当时,这显然是一个两难的境地,这是在同功能的匿名函数和匿名函数调用的变量名,所以它构成了一个闭合的,这是,这是关闭的。

无论你在这,一定要找到位置的功能函数时运行。它不是由函数getName此时的位置来判断,而是基于一个匿名函数运行时的位置。
函数(){
返回this.name;
};

显然,在匿名函数的窗口对象,所以这会躲在窗口,于是匿名函数返回this.name是window.name警报,因此全球!

那么,你如何让这个在XPG关闭缓存这
全局;
VaR XPG = {
名称:本地
getName:函数(){
var =;
返回函数(){
返回that.name;
};
}
};
警报(xpg.getname()());
的,这是当时的getName函数在运行位置的getName函数定义
警报(xpg.getname());
这一点对XPG对象,所以还指出,XPG对象。返回关闭匿名功能that.name,然后返回that.name实际上是xpg.name,所以它可以提醒出来的部分!

3,新关键字创建新对象

new关键字后面的构造函数中的这个值指向构造函数构造的新对象:
功能的人(__name){
this.name = __name; / /这一点与构造函数构造新的对象,这个例子是鲍伯对象
}
person.prototype.show =函数(){
警报(这个名称); / /这一点的人,this.name = person.name;
}

Var Bob =新的人();
Bob.show(); / /鲍勃

4,调用此应用程序

可以用Javascript管理的这个估计也是不调用和应用的。

调用和应用就像是父母的,这是生活在这和听!如果没有参数,则当前对象是窗口。
全局;
VaR XPG = {
名称:本地
};
功能getName(){
警报(这个名字);
}
getName(XPG);
getname.call(XPG);
getname.call();
这是在函数调用getName。无论你在这,一定要找到位置的功能函数时运行,功能同此时的位置
getName(XPG);
显然,getName目标函数是窗口,所以这会躲在窗口,它指向一个窗口对象的this.name window.name getName返回,所以全球警报!

然后,调用和应用出现了,因为这必须听从他们的命令!

getname.call(XPG);

其中,称这是在XPG遮挡指定,因此被迫定居在XPG,那么这一点是xpg.name XPG,this.name,所以警惕的地方!

5、在评价

eval函数,它似乎没有指定当前对象时执行,但实际上这并不指向窗口,因为该函数的作用域的范围,即代码将被添加到线。下面的例子说明了这个问题:
窗口;

Var Bob = {
姓名:鲍勃
showName:函数(){
eval(警报(这个名字));
}
};

Bob.showName(); / /鲍勃

6。当前对象没有清除此对象。

如果没有当前对象的显式执行,则指向全局对象窗口。

例如,我们有一个引用全局变量的函数。
var;

Var Bob = {
姓名:鲍勃
显示:函数(){
警报(这个名字);
}
}

VaR显示= bob.show;
显示();

您还可以理解,显示是窗口对象下的方法,所以在执行时当前的对象是窗口,但是本地变量引用的函数不能用这种方式解释:
窗口;

Var Bob = {
姓名:鲍勃
showName:函数(){
警报(这个名字);
}
};

Var Tom = { {
姓名:汤姆
showName:函数(){
VaR的乐趣= Bob.showName;
(有趣);
}
};

Tom.showName(); / /窗口

在浏览器中,对当前对象的setInterval和setTimeout,匿名函数的全局对象窗口,这可以看作是最后的一个特例。
var;
无功nameobj = {
姓名:汤姆
showName:函数(){
警报(这个名字);
},
WaitShowName:函数(){
setTimeout(this.showname,1000);
}
};

nameobj.waitshowname();

所以,当运行this.showname,这个点的窗口,所以它显示在最后window.name。

7,这在DOM事件中

(1)您可以直接在DOM元素中使用它。
分析:对DOM元素一个onclick元素(或其他属性,如事件),它是由HTML元素拥有。它直接在它触发的函数中写入,这应该指向HTML元素。

(2)注册DOM元素的js函数。

不正确的方式
功能试验(){
警报(这个值);
}
分析:onclick事件调用该函数直接和程序将弹出定义。因为该函数定义在窗口对象,

所以业主的考验(范围)是窗口,而这也对窗口,窗口没有价值属性,所以它是错误的。

B,正确的方法
功能试验(){
警报(这个值);
}
文件。getElementById。onclick=考试(btntest ); / /按钮的OnClick事件登记功能
分析:在前面的例子中,在该函数是在全局作用域中定义的(这里是窗口对象),所以这是指当前窗口对象,document.getelementbyid(btntest)。Onclick =考试;这种形式,实际上是btntest onclick属性设置为一个副本的试验功能,对这btntest onclick属性的功能范围,由btntest这所有,也指出btntest。事实上,如果有多个DOM元素来登记的事件,我们可以使用不同的DOM元素的ID,是这样实现的:

文件。getElementById。onclick=考试(domid ); / /按钮的OnClick事件登记功能。
因为许多不同的HTML元素创建不同的函数副本,但每个副本所有者都是对应的HTML元素,它们的副本也指向它们的所有者,这不会引起混淆。

为了验证语句,我们改进了代码,让按钮直接弹出相应的触发器函数:
功能试验(){
此值为提交;
}
VaR建立document.getelementbyid(btntest1 );
警报(BTN。onclick); / /第一个按钮的功能

无功btnother = document.getelementbyid(btntest2 );
BtnOther。onclick=试验;
警报(btnother。onclick); / /二按钮功能

弹射的结果是:

第一个按钮
函数onClick(){
这项测试()
}

第二个按钮
功能试验(){
此值为提交;
}

从以上结果,你必须更透彻地理解。

顺便说一下,一个新函数的每一个拷贝,程序都会为这个函数的拷贝分配一定数量的内存。在实际应用中,大多数函数不一定被调用,而且这部分内存被浪费了。所以我们通常写这个:
功能试验(obj){
警报(obj值);
}
这是因为我们使用的函数参考使用方式和程序分配内存的函数的本体,并参考指定指针。这样,写一个函数,在调用的地方指定一个参考吧,这是更有效的。当然,如果你不没想到这样的注册事件可与各种浏览器兼容,您可以对以下注册事件写一个通用的脚本:
/ / js事件被添加eventutil.addevent(DOM元素、事件名称、事件触发的函数名)去除eventutil.removeevent(DOM元素、事件名称、事件触发的函数名)。
无功eventutil =新eventmanager();

事件总经理DOM元素添加或删除事件
功能eventmanager(){
添加事件
/ / odomelement:DOM元素,如按钮、文本、文件、oeventtype:;*事件的名称(如:点击,如果IE浏览器自动转换点击onclick * ofunc:);事件触发的函数名称
this.addevent =功能(odomelement,oeventtype,ofunc){

如果(odomelement。attachevent){
odomelement.attachevent(+ oeventtype,ofunc);
}
、歌剧、Safari等
如果(odomelement。addEventListener){
ODomElement.addEventListener(oeventtype,ofunc,假);
}
/其他
{其他
odomelement { + oeventtype } = ofunc;
}
}

this.removeevent =功能(odomelement,oeventtype,ofunc){

如果(odomelement。detachevent){
odomelement.detachevent(+ oeventtype,ofunc);
}
、歌剧、Safari等
如果(odomelement。removeEventListener){
ODomElement.removeEventListener(oeventtype,ofunc,假);
}
/其他
{其他
odomelement { + oeventtype } = null;
}
}
}

正如报告中写道,对登记的DOM元素的事件,与eventutil.addevent(DOM元素的事件,名称的事件触发函数名)可以删除,可以这样写:eventutil.removeevent(DOM的事件名称事件触发的函数名),这是方法,不说。

以上就是本文的全部内容,希望通过这篇文章,我们能对Javascript的这一关键点有更多的了解,共同进步。

相关文章

ps强冷汽车海报的合成

ps强冷汽车海报的合成

海报,电脑软件,ps,萧边今天用ps软件教你制作一个酷酷的汽车海报教程,很漂亮,爱的朋友可以一起学习。 效果图很简单,但是画面非常生动,主体使用了几辆赛车,加上运动模糊等等。它有很强的速度感。与此同时,屏幕上增加了烟雾、火焰、灯光等,这使画面…

非主流人格签名

非主流人格签名

人格,非主流,电脑软件,我不知道如何去爱一个人,但我知道如何爱你。为你的QQ选择一个非主流的签名。 1,分数不重要,重要的是生活成绩。 2,老师总是说我们不聪明,我想说老师,如果我们聪明,你想做什么 3、爱是爱,何必掩饰那么多 4,亲爱的,也许,没有你,我会…

jQuery移动定制按钮图标

jQuery移动定制按钮图标

按钮图标,电脑软件,jQuery,很多朋友对jQuery的自己的图标做出反应,这些图标很少。此外,我认为图标太小(系统是18×18),所以我考虑如何定制按钮图标。 刚刚接触jQuery Mobile框架中,有一个非常现实的问题是,如何自定义按钮图标,我认为这是太小的jQu…

ppt如何自动播放PPT基本教程

ppt如何自动播放PPT基本教程

教程,自动播放,电脑软件,ppt,PPT,如何在PPT幻灯片中自动设置几张图片,因为报告需要在同一幻灯片中放置多张图片。一键播放不是很漂亮,时间也不容易控制,最好的办法是叫他自动播放,并分享详细的教程。 因为报告需要把许多图片放在同一张幻灯片上…

多么美丽的花边Word2010教程Word20

多么美丽的花边Word2010教程Word20

文档,教程,花边,美丽,电脑软件,内容和电子文档的形式提到了同等重要的位置,只是白纸黑字的文件或是在传统行业或正式场合非常需要的,但是在年轻人中,如写一封信给他的女朋友什么的,这种无聊的文字页面已经过时了,然后,小学习单词的文档添加一个漂…

伤感的爱情签名伤感签名

伤感的爱情签名伤感签名

伤感,爱情,电脑软件,1、一步一笑,一步一步难过,一步一难,虽然记忆再悲伤,我微笑,不想忘记。 2。世界上最悲哀的事是,当过去爱你的人成为你的所有人时,你对她不再重要了。 3,杀了成千上万的莫:白化画,如果你敢对你的徒弟伤害她一分钟,我就杀了你的家人,…

如何删除网页Word2007页码Word2007

如何删除网页Word2007页码Word2007

网页,教程,删除,页码,电脑软件,在一个页面文件,Word2007有时不想在首页页码。例如,标题页或首页没有页码。 注意:如果将预设封面或标题页从设计样式库中添加到页码中,则添加的封面或标题页的页码为1,而第二页的页码为2。 删除页码 此过程适用于…

用PS制作可爱的黄种人的牙齿和嘴巴

用PS制作可爱的黄种人的牙齿和嘴巴

牙齿,嘴巴,黄种人,可爱,电脑软件,本教程是介绍一个朋友到PS,使可爱的小黄人的牙齿和嘴。这个教程的效果真的很好。方法很简单。推荐给你最喜欢的朋友,快速学习。 在最后两节,我们制作了萧皇人的身体和眼睛的一部分。本节介绍如何用PS制作可爱…

AICS5的宽度画出美丽的天使带翅膀

AICS5的宽度画出美丽的天使带翅膀

画出,宽度,翅膀,女孩,天使,本教程介绍朋友AI CS5宽度工具拍打着翅膀画出美丽的天使般的女孩。这个教程的效果真的很漂亮,难度也不是很大。建议你喜欢你的朋友看一看。 本教程教朋友们使用AI CS5工具画出漂亮的宽度和挥舞的天使们,这是不是很…

超级可爱可爱卡通小人画图教程

超级可爱可爱卡通小人画图教程

教程,画图,小人,超级可爱,卡通,本教程是介绍一个朋友PS来画可爱可爱的卡通小人,渲染出来的小人很可爱,推荐一个非常简单的方法,给爱,朋友一起学习。 这个PS教程教给学习者使用PS鼠标画PS画超级可爱可爱卡通小人,渲染出反派很漂亮,画难度中等。我…

摄氏度是怎样表达的词中常见问题

摄氏度是怎样表达的词中常见问题

常见问题,是怎样,摄氏度,词中,电脑软件,这些天王忙着为学生准备期中考试,但他们遇到了难题。他不知道怎么用字来表示摄氏度符号,最常见的是输入一些平方米、立方米、直径符号等等,这一次我真的不知道如何进入摄氏度符号。 虽然一些小的符号通…

经典人格签名经典人格签名

经典人格签名经典人格签名

人格,经典,电脑软件,在你找到合适的人之前,你唯一需要做的就是使自己足够好。下面的经典签名的小汇编,供你参考,我希望你能获得! 经典签名: 你不需要为你喜欢的人留言,因为她是一个团体。 我不哭,我不会笑。我会在我累的时候消失。 你说,如果以后…