javascript中this
下面都是个人理解以及查找的网上的资料,如有不对的地方请指正
This
this 始终指向调用它的对象 ,都没有对象调用时就指向window
另外就是this一般都是在function中,当不在function中的时候 一定是指向window的.
var a ='a';
alert(this.a); //出来的是a
alert(this.b); //undefined 因为还没定义
var b= 'b';
alert(this.b); //出来的是b 所有的全局变量都是window的属性
当在function中的时候,如果没有对象调用它还是指向window的
var a ='a';
function test(){
alert(this.a)
}
test();
有人觉得this是根据上下文来确定的,反正我不明白这是什么意思 只要抓住一点 有没有对象调用它就好了,不管这个this隐藏的有深
var a ='a';
function test(){
(function(){
(function(){
(function(){
alert(this.a); //这个this隐藏的够深了吧 但是没有对象调用 还是指向window
})();
})();
})()
}
test();
在function中 当有对象调用这个function的时候 this就指向这个对象了......
var vv = "wo bu shi vv";
function text(){
alert(this.vv)
};
var obj = {
vv : "vv",
say :text
};
text(); //可以看到 没有对象调用 指向的是window
obj.say();//say引用的text 有对象调用(obj) this指向的是obj
在js中有一个神奇的方法,他就是call,apply他可以改变this 的指向;
var text = {
name : "we are good",
say : function(){
alert(this.name);
}
}
var pest ={
name : "we are pest"
}//可以看到pest没有say这个方法
text.say.call(pest);//可以看到alert出来的是we are pest
text.say.apply(pest);
还有一中情况就是类了, js中的类就是function吗,当new一个function的时候就会生成一个对象(也不一定啊 当在某些情况下还会是function 如构造类 现在我说的是基本的) this 就指向这个对象了
function perseon(name){
this.name = name;
this.say = function(){
alert(this.name)
}
}
var wt = new perseon('wt');
wt.say(); //指向的wt
var taozi = new perseon('taozi');
taozi.say();//指向的taozi
以上都是针对js语言来说明的 所说的对象也是原生(Native)对象
另外还有宿主(Host)对象 如dom元素
但是原理还是一样 如果是元素的方法调用的函数 函数里面的th
相关文档:
引言
增加客户端的表单验证可以为用户提供更快的体验,但决不能忽视的是,客户端表单验证永远不应该取代服务器端的验证,而只能是辅助和增强。根据经验JavaScript验证表单基本分为以下几方面的内容,必填字段、特殊模式匹配等,还要注意错误的提示方式对一个表单的可用性有着极其重要的影响。
2建立表单
&nb ......
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消选取、防止复制
3. onpaste="return false" 不准粘贴
4. oncopy="return false;" oncut="return f ......
Several programming languages implement a sprintf function, to output a formatted string. It originated from the C programming language, printf function. Its a string manipulation function.
This is limited sprintf Javascript implementation. Function returns a string formatted by the usual printf co ......
1. ==
Javascript有两组相等运算符,一组是==和!=,另一组是===和!==。前者只比较值的相等,后者除了值以外,还比较类型是否相同。
请尽量不要使用前一组,永远只使用===和!==。因为==默认会进行类型转换,规则十分难记。如果你不相信的话,请回答下面五个判断式的值是true还是false:
false == 'false'
false ......
这几天,我在读《Javascript语言精粹》。
这本书很薄,100多页,正好假日里翻翻。
该书的作者是Douglas Crockford,他是目前世界上最精通Javascript的人之一,也是Json格式的创造者。
他认为Javascript有很多糟粕。因为1995年Brendan Eich设计这种语言的时候,只用了三个月,很多语言特性没有经过深思熟虑,就推向了市 ......