zoukankan      html  css  js  c++  java
  • Javascript简明教程(4) 对象

    JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
    JavaScript的对象用于描述现实世界中的某个对象。例如,为了描述“小明”这个淘气的小朋友,我们可以用若干键值对来描述他:

    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    004
    005
    006
    007
    008
    var xiaoming = {[/size]
    [size=3]    name: '小明',
        birth: 1990,
        school: 'No.1 Middle School',
        height: 1.70,
        weight: 65,
        score: null
    };

    JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。上述对象申明了一个name属性,值是'小明',birth属性,值是1990,以及其他一些属性。最后,把这个对象赋值给变量xiaoming后,就可以通过变量xiaoming来获取小明的属性了:

    [JavaScript] 纯文本查看 复制代码
    001
    002
    xiaoming.name; // '小明'[/size]
    [size=3]xiaoming.birth; // 1990

    访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''括起来:

    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    004
    var xiaohong = {
        name: '小红',
        'middle-school': 'No.1 Middle School'
    };

    xiaohong的属性名middle-school不是一个有效的变量,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问:

    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    xiaohong['middle-school']; // 'No.1 Middle School'
    xiaohong['name']; // '小红'
    xiaohong.name; // '小红'

    也可以用xiaohong['name']来访问xiaohongname属性,不过xiaohong.name的写法更简洁。我们在编写JavaScript代码的时候,属性名尽量使用标准的变量名,这样就可以直接通过object.prop的形式访问一个属性了。

    实际上JavaScript对象的所有属性都是字符串,不过属性对应的值可以是任意数据类型。
    如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined
    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    var xiaoming = {[/size][/align][size=3]    name: '小明'
    };
    xiaoming.age; // undefined
    由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    004
    005
    006
    007
    008
    009
    010
    011
    var xiaoming = {
        name: '小明'
    };
    xiaoming.age; // undefined
    xiaoming.age = 18; // 新增一个age属性
    xiaoming.age; // 18
    delete xiaoming.age; // 删除age属性
    xiaoming.age; // undefined
    delete xiaoming['name']; // 删除name属性
    xiaoming.name; // undefined
    delete xiaoming.school; // 删除一个不存在的school属性也不会报错
    如果我们要检测xiaoming是否拥有某一属性,可以用in操作符:
    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    004
    005
    006
    007
    008
    009
    010
    var xiaoming = {
        name: '小明',
        birth: 1990,
        school: 'No.1 Middle School',
        height: 1.70,
        weight: 65,
        score: null
    };
    'name' in xiaoming; // true
    'grade' in xiaoming; // false
    不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:
    [JavaScript] 纯文本查看 复制代码
    001
    'toString' in xiaoming; // true
    因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。
    要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:
    [JavaScript] 纯文本查看 复制代码
    001
    002
    003
    004
    var xiaoming = {[/size][/align][size=3]    name: '小明'
    };
    xiaoming.hasOwnProperty('name'); // true
    xiaoming.hasOwnProperty('toString'); // false
  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/yaogua/p/6523482.html
Copyright © 2011-2022 走看看