JScript中的"this"关键字使用方式补充材料


Posted in Javascript onMarch 08, 2007

在"JavaScript中this关键字使用方法详解"一文中,我曾例举了在JavaScript和JScript中的8种this关键字的方式。这不又发现还有两种this关键字的使用方式当时没有说到,现补充说明一下。并且通过第一种this关键字使用的说明,能让我们更好的理解JavaScript作为Object-Based语言的本质。

    一种是和JavaScript类中的定义有关,我们知道当我们定义如下类的时候:  

function JSClass()
{
}

JSClass.prototype.m_Properties = 100;

JSClass.prototype.ToString = function()
{
    alert(this.m_Properties);
}

    方法ToString中的this.m_Properties就是100,那么下面这种定义呢? 

function JSClass()
{
}

JSClass.m_Properties = -100;

JSClass.ToString()
{
    alert(this.m_Properties);
}

    这时ToString中的这个this.m_Properties是啥?是-100。一定吗?这个不一定了,这得看我们怎么调用这个ToString方法。 

JSClass.ToString();
var fun = JSClass.ToString();
fun();
    这时的运行结果居然是:-100和undefined。真是郁闷哈,怎么才能运行fun得到-100呢?需要这样来为fun赋值:

var fun = function() { JSClass.ToString(); }
fun();
    呵呵,这样就是-100了。好像挺废话的,最终不还是调用的JSClass.ToString()吗?这个我们后面再说,看看把这两个JSClass合在一起是什么情况呢? 

function JSClass()
{
}

JSClass.m_Properties = -100;
JSClass.prototype.m_Properties = 100;

JSClass.ToString = function()
{
    alert(this.m_Properties);
}

JSClass.prototype.ToString = function()
{
    alert(this.m_Properties);
}

    这两个ToString()方法,和里面的this关键字它们是什么关系呢?看下面的示例: 

var jsclass = new JSClass();
jsclass.ToString();
JSClass.ToString();
    结果为:100和-100。这里的jsclass实际上是JavaScript的语言机制,通过new关键字的说明来创建的一个新的实例。而JSClass是什么呢?他们本就是对象实例,只是长得像个函数,也像一个类的说明。对于this的问题,第一个jsclass.ToString()方法里的this是指新创建实例,而JSClass.ToString()方法里的this是值得JSClass这个对象实例。

    理解了这两个this所指代的东西的不同本质,也就能更好的明白,为什么JavaScript叫做Object-Based的语言,而更加清楚它和Object-Oriented语言的本质区别。

    回头再说一下补充第二中this的使用方法,就是在使用eval方法的时候,这个时候的this是什么呢?看看:

alert(this === eval("this"));
    的结果是什么?是true!这是因为eval内代码被执行的作用域就是当前页面本身的说。

Javascript 相关文章推荐
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
提交表单时执行func方法实现代码
Mar 17 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
Sep 25 Javascript
javascript匿名函数实例分析
Nov 18 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
Jquery zTree 树控件异步加载操作
Feb 25 Javascript
jQuery页面弹出框实现文件上传
Feb 09 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
vue+iview动态渲染表格详解
Mar 19 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
function, new function, new Function之间的区别
Mar 08 #Javascript
JavaScript中this关键字使用方法详解
Mar 08 #Javascript
区分JS中的undefined,null,"",0和false
Mar 08 #Javascript
在JavaScript中使用inline函数的问题
Mar 08 #Javascript
JS类中定义原型方法的两种实现的区别
Mar 08 #Javascript
JavaScript语言中的Literal Syntax特性分析
Mar 08 #Javascript
从JavaScript的函数重名看其初始化方式
Mar 08 #Javascript
You might like
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
PHP输入流php://input介绍
2012/09/18 PHP
关于svn冲突的解决方法
2013/06/21 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
详解python中sort排序使用
2019/03/23 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
团日活动策划书
2014/02/01 职场文书
学生请假条
2014/04/11 职场文书
产品售后服务承诺书
2014/05/21 职场文书
中国世界遗产导游词
2015/02/13 职场文书
求职信格式范文
2015/03/19 职场文书