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>
- js脚本语言原理(实例说明js脚本语言和php脚本语言的区别)
- js中push和join
- react组件分析(react-diagram 序列化Json解读案例分析)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- js基础入门运算符(js 可选链操作符的使用)
- js实现CSS格式化和压缩
- JS中Location
- 在html中使用javascript实例代码(原生 JS+CSS+HTML 实现时序图的方法)
- 禁止鼠标右键的JS代码
- php入门教程源代码修改教程(php+js实现的无刷新下载文件功能示例)
- js如何实现定时器功能(js实现0ms延时定时器的几种方式)
- python将对象转换成json(python对象与json相互转换的方法)
- js实时获取页面宽度(JavaScript获取网页的宽高及如何兼容详解)
- js使用canvas(JavaScript canvas实现七彩时钟效果)
- 微信发送镭射效果代码(JS实现微信"炸屎"大作战功能)
- pjs计算方式(JS代码编译器Monaco使用方法)
- ()
- 800壮士拼死拖住30万日军 八佰 的真实历史,誓与阵地共存亡(800壮士拼死拖住30万日军)
- 演员陈创,火于 哮天犬 ,颠峰于 福贵 ,现状却令人唏嘘(演员陈创火于哮天犬)
- 幼小衔接-20以内看图读数 写数 数的组成练习题(幼小衔接-20以内看图读数)
- 你只要花上20天记单词,英语成绩就能从57提到100(你只要花上20天记单词)
- 夕云天际飞,亢龙化太极(夕云天际飞亢龙化太极)
热门推荐
- mysql日期与时间函数(MySQL日期函数与时间函数汇总MySQL 5.X)
- 安装laravel框架(laravel框架的安装与路由实例分析)
- 微信小程序计算器怎么用(用微信小程序实现计算器功能)
- python人脸识别库有几个(Python人脸识别第三方库face_recognition接口说明文档)
- phpstudy怎么修改mysql版本(PhpStudy集成环境升级MySQL数据库版本的方法)
- python常用的属性和方法(Python进阶之@property动态属性的实现)
- 织梦二次安装教程(重新安装织梦系统以及转移空间、上传空间的方法)
- 去除inline-block元素间的间隙
- mysql怎么看脱机数据(MYSQL电话号码,身份证数据脱敏的实现)
- SQL Server Profile事件含义
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9