1.一般而言,在Javascript中,this指向函数执行时的当前对象。举例如下:
var someone = { name: "Bob", showName: function(){ alert(this.name); } }; var other = { name: "Tom", showName: someone.showName } other.showName(); //Tom
this关键字虽然是在someone.showName中声明的,但运行的时候是other.showName,所以this指向other.showName函数的当前对象,即other,故最后alert出来的是other.name。
当没有明确的执行时的当前对象时,this指向全局对象window。
var name = "window"; var Bob = { name: "Bob", showName: function(){ alert(this.name); } }; var Tom = { name: "Tom", showName: function(){ var fun = Bob.showName; fun(); } }; Tom.showName(); //window
想要让它输出Tom,可以使用下面的代码:
var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this; setTimeout("that.showName();", 1000); } }; nameObj.waitShowName();
2.在if语句中,各个类型变量的判定如下:
String类型有内容判断true,无内容,判断为false,Number类型的变量,1判断为true,0判断为false.对于对象来说,为null为false,而不为null则为true
<head> <meta charset="UTF-8"> <title>测试各个范围的变量在if</title> </head> <body> </body> <script> var a; //测试undefined if(a) { alert('a is true '+a); } else { alert('a is false '+a); } /** * 测试结果在a为undefined的时候,在if语句内判断为false */ var b=""; //b为没有内容的字符串 if(b) { alert('b is true' +b); } else { alert('b is false '+b); } /** * 测试结果在b为空字符串 的时候,if语句判断为false */ var c="abc"; if(c) { alert('c is true'+c); } else { alert('c is false '+c); } /** * c为有内容的字符串,if语句中判断为true */ var d=1; if(d) { alert('d is true'+d); } else { alert('d is false'+d); } /** * d为1,在if语句判断为true */ var e=0; if(e) { alert('e is true'+e); } else { alert("e is false"+e); } /** * e为0,在if语句中判断为false */ var f=new Array(4); if(f) { alert('f is true '+f); } else { alert('f is false '+f); } /** * 如果f为对象的话,就为true,当f为null的时候,为false */
3.HTMLDOM对象可以理解为和获取Java对象的属性一样,例如获取了一个div元素div,它有个style属性,style属性里可以设置display属性的值,因此就直接使用div.style.display=''inline";这里注意一点,这种方法只能获取属性.但是不代表嵌套的元素可以获取.例如如果bldy中只有一个子元素叫做div,那么是不存在body.div的.相关的HTMLDOM元素需要看文档才能弄清楚.
4.javascript中的document.write属性:它支持在文档中写内容.但是它会将文档中原有的内容全部覆盖!所以一般不用于去写内容.
5.javascript变量的重新声明:如果重新声明javascript变量,该变量的值不会丢失.例如:
var x=2; var x; //x依然为2.
6.js对象的属性的寻址有两种方式:name=person.lastName,name=person["lastName"].
7.js对象的生命周期:js变量的生命从它们被声明开始,然后局部变量会在函数运行以后被删除,全局变量会在页面关闭后删除.
8.js中只有两种循环:for循环和while循环.
9.typeof和Instance of区别:typeof判断元素的数据类型,返回的是string,而instanceof则判断的是某个对象是否属于某个引用类型.返回的是boolean.需要注意的是,用var定义的变量如果是字符串数据类型也只是string.用instance of String依然返回false.
<script> var a='abc'; var b=new String('abc'); alert("var--"+(a instanceof String)); alert("new--"+(b instanceof String)); </script>
10.js中的void运算符:
• void后面的任意结果都会被转移成undefined,因此采用void(0)来代替undefined更加安全可靠.
• void可以填充a的href确保点击之后不会发生跳转,这就是页面中经常看到的javascript:void(0)(javascript的内嵌引入,不执行任何操作)
11.js中的parseInt函数:
解析字符串,并将其转化为整数:与Java的parseInt不同的是,它会试图从字符串的第一个字符开始按照顺序解析,直到遇到非数字.如果字符串第一个字符就是非数字,则不会进行解析.例如parseInt(2.32)为2,parseInt(12a)为12
12.js的关系运算符:js的关系运算符和==运算符一样,会在比较的时候,试图进行类型转换.例如:11>"2"则返回为true