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>
- vue.js 怎么做插件(Vue.js实现音乐播放器)
- dede友情链接改为logo轮播教程(dedecms广告生成JS文件和JS调用-DEDE广告优化)
- laravel 数据表格(Laravel自定义 封装便捷返回Json数据格式的引用方法)
- python json转换字符串(python3 json数据格式的转换dumps/loads的使用、dict to str/str to dict、json字符串/字典)
- js实现商品添加(js实现购物网站放大镜功能)
- jQuery多个版本间,以及与其他js文件冲突的解决方法
- js音乐脚本怎么做(js实现网页音乐播放器)
- js日期格式化
- nodejs登录案例(利用Node.js创建一个密码生成器的全步骤)
- js闭包可以解决哪些问题(JavaScript中let避免闭包造成问题)
- JS让打开的窗口居中
- js中拼接字符串的几种方法
- python将对象转换成json(python对象与json相互转换的方法)
- js数字时钟编程(JavaScript实现动态数字时钟)
- 微信浏览器中JS实现返回操作
- eval解析json字符串
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
- 新手的勾线(新手的勾线)
- ()
- 书法欣赏 宋.志南诗《绝句》(宋.志南诗绝句)