zoukankan      html  css  js  c++  java
  • 理顺 JavaScript (13) 对象及 json


    和 Delphi/C# 类似, JavaScript 中所有对象的祖先是 Object, 虽然并不是全部面向对象的, 好像也是基于对象的.
    譬如一个字符串类型(string)变量, 可以使用字符串对象(String)的属性和方法, 那是在调用的一瞬间转换成了对象.

    建立原始空对象的两种方法
    var obj1, obj2;
    obj1 = new Object();
    obj2 = {};
    
    alert(obj1); // [object Object] - 属于 Object 类的 object
    alert(obj2); // [object Object]
    
    //上面两种方法建立的对象都可以使用以下六个方法(不如说是抽象方法):
    hasOwnProperty
    isPrototypeOf
    propertyIsEnumerable
    toLocaleString
    toString
    valueOf
    
    //Object 像不像个接口? 像也不像, 因为以上方法它并不强迫子类实现.
    
    
    //现在应该让人立马想起空数组的两种建立方法:
    var arr1, arr2;
    arr1 = new Array();
    arr2 = [];
    
    //Array 作为 Object 的子类, 继承或重新实现了上面方法, 并且增加了 sort 等更多数组专用的方法.
    
    //一个是 {}、 一个是 [], 很有意思; 更有意思的是它们可以互相包含.
    

    定义自己的对象
    //已存在 Array、Number、Date、RegExp 等实用的类(或叫对象模板), 如果构建自己的类呢?
    //很简单, 但不好理解:
    
    function Rectangle(w, h) {
      this.w = w;
      this.h = h;
    }
    
    /* 实例化一个 */
    var myObj = new Rectangle(11, 22);
    alert(myObj.w); //11
    alert(myObj.h); //22
    alert(myObj);   // [object Object]
    
    //可以看出 myObj 就是一个对象了; 在 js 中函数也是对象, 并且有一个 Function 类存在.
    
    //可以在 Rectangle(函数? 类?) 的基础上继续添加更多方法或属性, 这是后话.
    

    JavaScript Object Notation - json
    //js 用 {} 标识对象的方法(JavaScript Object Notation)被简称为 json;
    //说到 json, 佩服其的设计者, 本来是语言中描述对象的一种规则, 现在竟被推崇为超越 XML 的数据格式.
    
    var obj = {name:'张三', age:88, marriage:true};
    
    //{} 中的数据用 , 号隔开, 每个数据又是 Name : Value 的形式;
    // : 前面的标识符是比不可少的, 它将是对象的属性或方法等, 它也可以在引号中, 也支持中文.
    
    /* 访问 Value 方法一 */
    alert(obj.name);     //张三
    alert(obj.age);      //88
    alert(obj.marriage); //true
    
    /* 访问 Value 方法二 */
    alert(obj['name']);     //张三
    alert(obj['age']);      //88
    alert(obj['marriage']); //true
    
    /* 遍历 Value */
    for (var k in obj) {
      alert(obj[k]);      //张三 / 88 / true
    }
    
    /* 遍历 Name */
    for (var k in obj) {
      alert(k);           //Name / age / marriage
    }
    
    //对象还可以继续包含对象, 再连同数组互相嵌套, 因而 json 能表达非常复杂的数据结构.
    

    给自定义的类添加方法
    var obj = {
      name : '张三', 
      age : 88, 
      marriage: false,
      info: function() {return this.name + '今年 ' + this.age + ' 岁, ' + (this.marriage ? '已经结婚了.' : '至今未婚.')}
    };
    
    alert(obj.info());    //张三今年 88 岁, 至今未婚.
    alert(obj['info']()); //张三今年 88 岁, 至今未婚.
    
    obj.name = '李四';
    obj.age = 18;
    obj.marriage = true;
    
    alert(obj.info()); //李四今年 18 岁, 已经结婚了.
    
    //还有其他方法, 后续.
    

  • 相关阅读:
    Vim配置IDE开发环境
    Win7任务计划自由预设系统定时自动关机
    awk中文手册
    awk简明教程
    Linux之mount命令详解
    VirtualBox内Linux系统与Windows共享文件夹
    堆排序详解
    int main(int argc,char* argv[])参数详解
    GDB调试详解
    VirtualBox中虚拟Ubuntu添加新的虚拟硬盘
  • 原文地址:https://www.cnblogs.com/del/p/1401762.html
Copyright © 2011-2022 走看看