zoukankan      html  css  js  c++  java
  • javascript中的对象

    转帖http://www.cnblogs.com/wangwei123/archive/2010/05/12/1733084.html

    javascript中的对象创建声明:

        
    var obj = {}; 或者 var obj = new Object(); 

        为对象加入属性,方法:

        
    //=====第一种写法====================================


        obj.name 
    = '小明';    //为对象加属性

        obj.updateName 
    = function(name){//为对象定义updateName方法
            this.name = name;
        }

        alert(obj.name);

        obj.updateName(
    "小强");    //调用updateName修改obj对象的name属性值 

        alert(obj[
    'name']);

        第一次显示结果为:小明

        第二次显示结果为:小强

        
    //=====第二种写法====================================

        obj[
    'name'= '张三';     //为对象加属性
        obj['updateName'= function(name){//为对象定义updateName方法
            obj['name'=name;
        }; 

        alert(obj.name);

        obj.updateName(
    '李四');    //调用updateName修改obj对象的name属性值 

        alert(obj[
    'name']);

        第一次显示结果为:张三

        第二次显示结果为:李四

        
    //=====第三种写法====================================

        
    var obj = {
            name:  
    '王五',    //为对象加属性
            updateName: function(name){//为对象定义updateName方法
                this.name = name;      
            }
        };

        alert(obj .name);

        obj.updateName(
    "赵六");    //调用updateName修改obj对象的name属性值

        alert(obj .name);

        第一次显示结果为:王五

        第二次显示结果为:赵六

        
    //=====分析=====================================

        第一种写法是最普通的对象写法,因为javascript是动态语言,与Java和.Net不同,

        在程序运行并创建对象后,还可以对该对象的内部结构进行修改,

        比如添加属性和方法(java和.net中的反射机制做不到这点)。

        (a): 
    var obj = {} || new Object();

        (b):obj.name 
    = "张三";

        (c):obj.updateName 
    = function(name){ this.name = name};


        当程序执行(a) 后,便创建了一个空对象(不包含任何方法和属性)obj,

        当程序执行(b) 后,改变了obj的内部结构,加了一个属性name,

        当程序执行(c) 后,改变了obj的内部结构,加了一个方法updateName ,

        而这都是在运行的时候完成的动作


        第二种写法像数组,但绝不是数组,区分是不是数组可以如此判断:

        
    if(typeof(obj.length) == "undefined") {
            alert(
    "obj不是数组,数组都有length属性!");
        }
    else{
            alert(
    "obj是数组!");
        }

        第二种写法更像一种数据结构:map ,如:obj[key] 
    = value;

        key是字符串,value可以是任何类型,变量,对象,函数等。

        可以通过这种方式遍历对象内部结构:

        
    for(var key in obj)
        {
            alert(key);

            
    var value = obj[key];

            alert(value);
        }

        通过alert可以显示出你所定义的内容。

        第三种写法一看就是map的内部结构了,一个对象,内部完全用key : value键值对方式表示

        JSON对象也是这种结构,只要对map或者JSON对象有所熟悉的就很容易理解了。

  • 相关阅读:
    day05
    day04
    day03
    day02
    一个球从100m高度自由下落,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高
    有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,... 求出这个数列的前20项之和
    输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=1^3+5^3+3^3
    求和k(1到100)+k*k(1到50)+1/k(1到10)
    求Sn=a+aa+aaa+...+aa..a(n个a)之值,其中a是一个数字,n表示a的位数,例如:2+22+222+2222+22222(n=5),n由键盘输入
    求1!+2!+3!+4!+...+20!
  • 原文地址:https://www.cnblogs.com/niceworld/p/1949725.html
Copyright © 2011-2022 走看看