javascript 的一点总结

Javascript面向对象的特性

(总结自:http://www.cnblogs.com/zhangziqiu/archive/2009/05/26/jQuery-Learn-javascript.html ,在此仅作为学习笔记)

 

1、创建一个类

 

var obj = new Object(); //其中new可以省略

 

 

2、创建属性,不用声明直接赋值:

obj.property1 = "I'm property1.";

 

3、嵌套属性

 var objectB = objectA;

objectB.other = objectA;
//此时下面三个值相当, 并且改变其中任何一个值其余两个值都改变
objectA.name;
objectB.name;
objectB.other.name;

 

4、使用索引

 

//如果objectA上有一个属性名称为"school.college", 那么我们没法通过"."访问,因为"objectA.school.college"语句是指寻找objectA的school属性对象的college属性.
//这种情况我们需要通过索引设置和访问属性:
         objectA["school.college"] = "BITI";
         alert(objectA["school.college"]);
 
//下面几个语句是等效的:
        objectA["school.college"] = "BITI";
        var key = "school.college"
        alert(objectA["school.college"]);
        alert(objectA["school" + "." + "college"]);        
        alert(objectA[key]);

 

 

5、JSON 格式语法

 

        //JSON
        var objectA = {
            name: "myName",
            age: 19,
            school:
            {
                college: "大学",
                "high school": "高中" 
            },
            love:["编程","唱歌","游玩"]
        }

 

 可用objectA.school["high school"];objectA.school.college;objectA.like[1]; 等来访问。。。

 

6、静态方法与实例方法

 

        function theStaticClass() { }; //声明一个类
        theStaticClass.staticMethod = function() { alert("static method") }; //创建一个静态方法
        theStaticClass.prototype.instanceMethod = function() { "instance method" }; //创建一个实例方法

 对于静态方法可以直接调用:

 

 

staticClass.staticMethod();

 

但是动态方法不能直接调用:

staticClass.instanceMethod(); //语句错误, 无法运行.

 

需要首先实例化后才能调用:

        var instance = new staticClass();//首先实例化
        instance.instanceMethod(); //在实例上可以调用实例方法

 

7、全局对象window属性

在页面中创建的类

 

<script type="text/javascript">
        var objectA = new Object();
</script>

 

是个全局变量。实际上全局变量objectA是创建在window对象上,所以可以用window.objectA来引用。

 

8、函数的实现

 

        function myMethod()
        {
            alert("Hello!");
        }

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

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

 

 

9、"this"可以指全局的window,也可以指当前变量或类

 

        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();//得到o1 name
        window.show();//得到window name

 

 

10、javascript中的闭包

简单表达:

闭包就是function实例以及执行function实例时来自环境的变量.

<!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>
    <title></title>
</head>
<body>
    <div id="divResult"></div>
    <script type="text/javascript">
        function start()
        {
            var count = 0;
            window.setInterval(function()
            {
                document.getElementById("divResult").innerHTML += count + "<br/>";
                count++;
            }, 3000);
        };
        start();
    </script>
</body>
</html>

 结果是:

0

1

2

3

……

因为count变量是setInterval中创建的匿名函数(就是包含count++的函数)的闭包的一部分!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值