JavaScript学习笔记及知识点整理_2

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

 

posted @ 2016-10-20 23:02  hlhdidi  阅读(250)  评论(0编辑  收藏  举报