javascript基础知识

引用:张子秋:从零开始学习jQuery(剧场版) 你必须知道的javascript
http://www.cnblogs.com/zhangziqiu/archive/2009/05/26/jQuery-Learn-javascript.html
向张子秋学习致敬!
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">

    //创建对象,为了保持语法一直, 总是带着new关键字声明一个对象.
	var objectA = new Object();
	
	//创建属性并赋值,在javascript中属性不需要声明, 在赋值时即自动创建:
    objectA.name = "天涯";
    
    //访问属性,一般我们使用"."来分层次的访问对象的属性
    alert(objectA.name);
    
    var objectB = objectA;
	objectB.other = objectA;
	
	//此时下面三个值相当, 并且改变其中任何一个值其余两个值都改变
	alert(objectA.name + " ," +	objectB.name + "," + objectB.other.name);
	
	//通过索引设置和访问属性
	objectA["school.college"] = "BITI";
    alert(objectA["school.college"]);    
    
    //json语法
     var jsonObjectA = {
            name: "天涯",
            age: 19,
            school:
            {
                college: "大学",
                "high school": "高中" 
            },
            like:["睡觉","java","还是睡觉"]
     };

     alert("姓名: " + jsonObjectA.name + ",年龄: " + jsonObjectA.age + ",学历:" +jsonObjectA.school["high school"] + ",其它: "+ jsonObjectA.like[1]);   
     
     //静态方法与实例方法,静态方法是指不需要声明类的实例就可以使用的方法.实例方法是指必须要先使用"new"关键字声明一个类的实例, 然后才可以通过此实例访问的方法
      function staticClass() { }; //声明一个类
      
      staticClass.staticMethod = function() { alert("static method") }; //创建一个静态方法
      staticClass.prototype.instanceMethod = function() { "instance method" }; //创建一个实例方法
      
      //对于静态方法可以直接调用
	  staticClass.staticMethod();
	  
	  //动态方法调用
	  var instance = new staticClass();//首先实例化
      instance.instanceMethod(); //在实例上可以调用实例方法
      
      //全局对象是window属性
       var objectA = new Object();
       
       //函数以下这三种写法是一样的
       function myMethod(){
            alert("Hello!");
        }

        window.myMethod = function(){
            alert("Hello!");
        }

        myMethod = function(){
            alert("Hello!");
        }
        
        //this
        var o1 = { name: "o1 name" };
        window.name = "window name";

        function showName()
        {
            alert(this.name);
        }        
        
        o1.show = showName;
        window.show = showName;

        //showName();//window name
        //o1.show(); //ol name
       // window.show();//window name
       //结果证明在顶层调用函数和使用window对象调用函数时, this都指向window对象. 而在对象中调用函数时this指向当前对象
       
       
           
       
	 
</script>
</head>
<body> 
<div id="divResult"></div>
    <script type="text/javascript">
       
        //闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
        //简单表达:
        //闭包就是function实例以及执行function实例时来自环境的变量.
        
        function start()
        {
            var count = 0;
            window.setInterval(function()
            {
                document.getElementById("divResult").innerHTML += count + "<br/>";
                count++;
            }, 3000);
        };
        start();
        
        //count是start函数体内的变量, 通常我们理解count的作用于是在start()函数内,  在调用start()函数结束后应该也会消失.但是此示例的结果是count变量会一直存在,并且每次被加1:
        //因为count变量是setInterval中创建的匿名函数(就是包含count++的函数)的闭包的一部分!
        //再通俗的讲, 闭包首先就是函数本身, 比如上面这个匿名函数本身, 同时加上在这个函数运行时需要用到的count变量.
        //javascript中的闭包是隐式的创建的        
    </script>
<p><a href="index.jsp">返回</a></p>
</body>
</html>

你可能感兴趣的:(JavaScript)