关于js中这个关键字的理解

关于js中这个关键字的理解
这个关键字在C++和java提供。刚开始学起来很难,但听懂了就容易多了。下面是js中这个关键字理解的详细说明。

关于这个,是很多面试的必修科目,有时候在网上看到这些题目,他试过,嗯,真的错了!在实际开发中,我们也会遇到这样的问题(虽然有些类库会帮助我们)。例如,当我们使用某些框架,例如,击倒,我们有时不明白为什么我们不直接使用它,但我们需要导入这个作为参数

然后你谈谈我对它的理解,也作为一个说明,方便以后参考

1。不像C #,这必须指向当前对象。

js的方向是不确定的,也就是说,它可以动态地改变。

2。一般来说,这是函数的拥有者。

这是非常重要的!这是非常重要的!这是非常重要的!

这也是一个常见的面试问题,下面的代码:
var = 1;
var obj = { {
编号:2,
shownumber:函数(){
this.number = 3;
(函数(){())
console.log(这个数字);
});
console.log(这个数字);
}
};
Obj.showNumber();
因为这shownumber方法业主obj,这个数= 3;这一点,对象属性数。

以同样的方式,第二console.log打印也是属性数。

为什么第二点说,一般来说,这是函数的拥有者,因为有一个特殊的情况,函数的自执行是一个特殊的情况。在一个函数的自我执行,这一点:窗户。所以第一console.log打印窗口的属性、数量。

所以加一点:

三.在函数的自执行中,这指向窗口对象。

扩展,关于这个,一个模糊的地方是在DOM事件中,通常有以下3个例子:

如下:

1。使用标签属性注册事件,此时指向窗口对象。
函数测试(){警报(此)}
2。对于1,让这个点输入,可以作为参数传递。

三.使用addEventListener等登记。在这一点上,这也点输入。
document.getelementbyid(测试),AddEventListener(单击
在面向对象的编程语言,我们与这个关键词非常熟悉。例如,C++,C和java #提供这个关键词。虽然很难在开始学习,这是非常方便的去理解它,只要是understood.javascript也提供这个关键词的意义,更是糊涂比经典的面向对象的语言。

让我们看看,在Javascript中使用各种各样的东西有什么困惑

1,在HTML元素事件属性中,内联方法使用这个关键字:
你可以在里面使用这个
>除法元素
你可以在里面使用这个
>除法元素
我们常用的方法是使用:Javascirpt:EventHandler(本),在这种形式。但在这里你可以写任何合法的Javascript语句,如果你是幸福的定义一个类,在这里,你可以(但这将是一个内部类)。这里的原则是,脚本引擎生成一个div实例对象匿名成员方法,和事件点的方法。

2,在DOM的事件处理函数中使用这个关键字:

分元

var div = document.getelementbyid('elmtdiv);
div.attachevent('onclick ',EventHandler);

Function EventHandler ()
{
使用此
}
分元

var div = document.getelementbyid('elmtdiv);
div.attachevent('onclick ',EventHandler);

EventHandler()函数
{
使用此
}

这是该关键词在EventHandler()方法,说明对象的IE,这是因为处理器只是一个普通的函数的窗口对象,并attachevent,脚本引擎无关的div对象本身的电话。同时,你可以看看EventHandler对方的财产,这等于零。如果我们想在这个方法得到的div对象的引用,应使用:this.event.srcelement。

3、在事件处理函数的这个关键词使用DHTML:

分元

lt;MCE:脚本语言=javascript>
var div = document.getelementbyid('elmtdiv);
div.onclick =功能()
{
使用此
};
分元

var div = document.getelementbyid('elmtdiv);
div.onclick =功能()
{
使用此
};

这个关键字的内容是div元素对象实例。在剧本中,DHTML是用来指定一个EventHandler到div.onclick直接,即div对象实例添加一个成员方法。这种方法和第一种方法的区别在于,第一种方式是使用HTML的方式,这里是DHTML方式。后一个脚本分析引擎将不再生成匿名方法。

4。在类定义中使用此关键字:

JSClass()函数
{
VAR我= 'jsclass;
this.m_name = 'jsclass;
}

jsclass.prototype.tostring =功能()
{
警报(名字+,+ this.m_name );
};

VaR JC =新JSClass();
Jc.ToString();
JSClass()函数
{
VAR我= 'jsclass;
this.m_name = 'jsclass;
}

jsclass.prototype.tostring =功能()
{
警报(名字+,+ this.m_name );
};

VaR JC =新JSClass();
Jc.ToString();
这是本在Javascript模拟类定义的使用,这是其他面向对象语言非常熟悉。但它要求成员属性和方法必须使用this关键字引用,和上面的程序会告诉我是没有定义的。

5,在脚本引擎的内部对象中添加原始方法中的这个关键字:
function.prototype.getname =功能()
{
无功fnname = this.tostring();
fnname = fnname.substr(0,fnname.indexof('));
fnname = fnname.replace( / / ^功能,);
返回(fnname.replace /(^ +)|( + $ / g),);
}
函数(富){ }
警报(foo.getname());
function.prototype.getname =功能()
{
无功fnname = this.tostring();
fnname = fnname.substr(0,fnname.indexof('));
fnname = fnname.replace( / / ^功能,);
返回(fnname.replace /(^ +)|( + $ / g),);
}
函数(富){ }
警报(foo.getname());
这里引用的是类添加到原始的实例,类似于4类定义,没有什么特别的东西。

6,加上24,说得更困惑这个关键字:

查看plaincopy到clipboardprint
JSClass()函数
{
this.m_text = 'division元;
this.m_element = document.createelement('div);
this.m_element.innerhtml = this.m_text;

this.m_element.attachevent('onclick ',这个字符串);
}

jsclass.prototype.render =功能()
{
document.body.appendchild(这个。m_element);
}

jsclass.prototype.tostring =功能()
{
(这m_text警报。);
};

VaR JC =新JSClass();
Jc:渲染();
Jc.ToString();
JSClass()函数
{
this.m_text = 'division元;
this.m_element = document.createelement('div);
this.m_element.innerhtml = this.m_text;

this.m_element.attachevent('onclick ',这个字符串);
}

jsclass.prototype.render =功能()
{
document.body.appendchild(这个。m_element);
}

jsclass.prototype.tostring =功能()
{
(这m_text警报。);
};

VaR JC =新JSClass();
Jc:渲染();
Jc.ToString();
我来谈谈结果。在页面运行之后,它将显示:除法元素

7,CSS的表达式表达式使用这个关键字:

高度:表达(这个。parentelement。高度);>
分元

高度:表达(这个。parentelement。高度);>
分元
这里的这个被认为与1相同,它也指div元素对象实例本身。

8。函数内部函数中的这个关键字被使用:
查看plaincopy到clipboardprint
outerfoo()函数
{
这名'outer名字;

InnerFoo()函数
{
变量名=内心的名字;
警报(名称+,+;
}
InnerFoo回来了;
}
outerfoo()()();
outerfoo()函数
{
这名'outer名字;

InnerFoo()函数
{
变量名=内心的名字;
警报(名称+,+;
}
InnerFoo回来了;
}
outerfoo()()();
运行结果显示:内部名称,外部名称,根据我们2的解释,这里的结果是内部名称,未定义的似乎更合理,但正确的结果确实是前者,这取决于Javascript变量范围的问题。建议参考文本的keyword'var'or在原来的Jscript文章回复。

总之,Javascript中有3种用法(文本的详细文本):

1。在HTML元素事件属性或CSS的表达式表达式中使用内联关键字中的这个关键字——与原来的1, 7对应

2。在事件处理函数中使用这个关键字——原始文本的2, 3

它可以分为两种方式。

(1)DOM模式——这种方式的结果就是指向窗口(窗口)对象。

(2)DHTML方式这种方式的结果是,这一点对div元素对象的一个实例

三.在类定义中使用这个关键字,并在其内部函数或成员函数(主要是原型生成)中使用它——与原来的4, 5和8对应。

需要解释的是,函数也是一个对象,因此需要区分变量的定义和成员变量的定义,如下所示:

查看plaincopy到clipboardprint

var变量名; / /变量定义
作用域:定义在范围内的函数
/ /使用:直接使用的变量名
this.varname; / /成员变量的定义
作用域:函数对象定义及其成员函数
使用方法: / / this.varname
var变量名; / /变量定义
作用域:定义在范围内的函数
/ /使用:直接使用的变量名
this.varname; / /成员变量的定义
作用域:函数对象定义及其成员函数
使用方法: / / this.varname
前三种说法很容易理解。对原始第六中提到的程序进行了测试和改进,以说明上述两种方法。

查看plaincopy到clipboardprint

JSClass()函数
{
无功vartext =函数变量!函数中的公共变量
this.m_text = 'func成员!;函数类成员变量
this.m_element = document.createelement('div '); / /成员变量,创建一个div对象
this.m_element.innerhtml = vartext; / /公共变量的使用功能
this.m_element.attachevent('onclick ',这个ToString); / /一个对象连接的事件处理函数
this.newelement = document.createelement('div);
this.newelement.innerhtml =新元素;
this.newelement.m_text =新的元素文本!;创建一个成员来创建对象
this.newelement.onclick =功能()
{
警报(这个。m_text); / /会员一个div对象
};
}

jsclass.prototype.render =功能()
{
document.body.appendchild(这个。m_element); / / div中悬窗
document.body.appendchild(这个新元素);
}

jsclass.prototype.tostring =功能()
{
警报(这个。m_text); / /(窗口)的窗口对象
};

函数初始化(){
VaR JC =新JSClass();
Jc:渲染();
Jc.ToString(本); / /实例里面一jsclass类,具有m_text成员
}
初始化();
JSClass()函数
{
无功vartext =函数变量!函数中的公共变量
this.m_text = 'func成员!;函数类成员变量
this.m_element = document.createelement('div '); / /成员变量,创建一个div对象
this.m_element.innerhtml = vartext; / /公共变量的使用功能
this.m_element.attachevent('onclick ',这个ToString); / /一个对象连接的事件处理函数
this.newelement = document.createelement('div);
this.newelement.innerhtml =新元素;
this.newelement.m_text =新的元素文本!;创建一个成员来创建对象
this.newelement.onclick =功能()
{
警报(这个。m_text); / /会员一个div对象
};
}

jsclass.prototype.render =功能()
{
document.body.appendchild(这个。m_element); / / div中悬窗
document.body.appendchild(这个新元素);
}

jsclass.prototype.tostring =功能()
{
警报(这个。m_text); / /(窗口)的窗口对象
};

函数初始化(){
VaR JC =新JSClass();
Jc:渲染();
Jc.ToString(本); / /实例里面一jsclass类,具有m_text成员
}
初始化();

上述代码执行的结果是:

加载页面时,弹出对话框并输出函数成员!

在页面上显示
函数变量!
新的元素

单击函数变量时,弹出对话框并显示未定义的变量。

因为在这个指针在toString函数点这时间窗口

单击新元素时,弹出对话框显示新元素文本!

因为那时这个指针在ToString函数指向的div元素,以及元素定义了m_text成员(this.newelement.m_text =新的元素文本)。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部