js中的this与with关键字
js中的this与with关键字
js中的this与with关键字在JavaScript的对象系统中,this关键字用在两种地方:
- 在构造器函数中,指代新创建的对象实例
- 在对象的方法被调用时,指代调用该方法的对象实例
如果一个函数被作为普通函数(而不是对象方法)调用,那么在函数中的this关键字将指向window对象。与此相同的,如果this关键字不在任何函数中,那么他也指向window对象。
javascript 中this 关键字的用法:
1.<li onclick="// 可以在里面使用this">liision element</li> this 指向li
2、this 指向window对象,若要引用li对象this.event.srcElement;
<li id="elmtli">liision element</li> <script language="javascript"> var li = document.getElementById('elmtli'); li.attachEvent('onclick', EventHandler); //attachEvent把li的onclick事件和一个方法绑定 function EventHandler() { // 在此使用this } </script>
3、用DHTML方式在事件处理函数中使用this关键字:
//产生的方法同上,但此处的this 指向li
<li id="elmtli">liision element</li>
<script language="javascript">
var li = document.getElementById('elmtli');
li.onclick = function()
{
// 在此使用this
};
</script>
4、类定义中使用this关键字:
//这是JavaScript模拟类定义中对this的使用,这个和其它的OO语言中的情况非常的相识。但是这里要求成员属性和方法必须使用this关键字来引用,运行上面的程序会被告知myName未定义。
function JSClass()
{
var myName = 'jsclass';
this.m_Name = 'JSClass';
}
JSClass.prototype.ToString = function()
{
alert(myName + ', ' + this.m_Name);
};
var jc = new JSClass();
jc.ToString();
5、为脚本引擎内部对象添加原形方法中的this关键字:
//这里的this指代的是被添加原形的类的实例,和4中类定义有些相似,没有什么太特别的地方。 Function.prototype.GetName = function() { var fnName = this.toString(); fnName = fnName.substr(0, fnName.indexOf('(')); fnName = fnName.replace(/^function/, ''); return fnName.replace(/(^\\s+)|(\\s+$)/g, ''); } function foo(){} alert(foo.GetName());
with关键字
1)简要说明
with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性。要给对象创建新的属性,必须明确地引用该对象。
2)语法格式
with(object instance)
{
//代码块
}
有时候,在一个程序代码中,需要多次使用某对象的属性或方法,照以前的写法,都是通过:对象.属性或者对象.方法这样的方式来分别获得该对象的属性和方法,着实有点麻烦,学习了with语句后,可以通过类似如下的方式来实现:
with(objInstance)
{
var str = 属性1;
.....
} 去除了多次写对象名的麻烦。
3)with关键字实例:
<script language="javascript">
<!--
function News() {
this.title = "郁闻天下";
this.keywords = "郁闷";
this.source = url;
}
var ymcn=new News();
with(ymcn)
{
var str = "标题: " + title + "<br>";
str += "关键字:" + keywords + "<br>";
str += "来源:" + source;
document.write(str);
}
//-->
</script>
- Extjs中grid 的ColumnModel 属性配置
- js中encodeURIComponent与C#中HttpUtility.UrlEncode
- 使用Console命令调试JS
- js的模块模式设计(如何理解JavaScript模块化)
- next js上线(Next.js入门使用教程)
- nodejs格式化教程(nodejs利用readline提示输入内容实例代码)
- angularjs使用指令(详解Angular路由动画及高阶动画函数)
- 延迟加载js文件
- js实现图片旋转
- php生成json信息(php使用json-schema模块实现json校验示例)
- angularjs数据绑定类指令及作用(详解Angular数据绑定及其实现方式)
- js简单小游戏代码(用JS实现飞机大战小游戏)
- js编写简单网页计算器(js实现网页计算器)
- threejs 三维可视化(three.js模拟实现太阳系行星体系功能)
- js 出现cannot find function(Fatal error: Call to a member function read on a non-object in 错误解决方法)
- js中parent和opener的区别
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
热门推荐
- laravel请求处理流程(详解如何实现Laravel的服务容器的方法示例)
- SQL Server中时间类型的范围
- docker容器退出错误码的步骤(docker容器退出错误码的步骤)
- mysql的视图和临时表区别(MySQL 内存表和临时表的用法详解)
- python itchat库介绍(Python利用itchat库向好友或者公众号发消息的实例)
- 织梦dedecms标签手册(织梦DEDECMS网站安全攻略之修改data目录名称方法步骤)
- pythonsql注入检测(Python版Mssql爆破小脚本)
- python使用pandas数据分析系列(python使用pandas处理大数据节省内存技巧推荐)
- python怎么去掉字符串的空格(Python切片操作去除字符串首尾的空格)
- tomcat环境配置都正确无法运行(为什么我的tomcat启动不起来)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9