美文网首页
object的基本操作

object的基本操作

作者: 路上灵魂的自由者 | 来源:发表于2019-01-06 13:59 被阅读5次

    // object对象数据类型

    普通对象

        -由大括号包裹起来的

         -由0到多组属性名和属性值(键值对)组成

            属性是用来描述当前属性特征的,属性名是当前具备这个特征,属性值是对这个特征的描述(专业语法,属性名称未键【key】,属性值称为值【value】,一组属性名和属性值称为一组键值对)

    ···

    var obj = { 

        name: '哈哈哈',

        age: 9

    };

    // =》对象的操作:对键值对的增删改查

    [获取]

        语法:对象.属性 / 对象[属性]

            obj.name //哈哈哈

            obj['name'] //哈哈哈 一般来说,对象的属性名都是字符串格式的(属性值不固定,任何格式都可以)

    [增/改]

        在js对象中,属性名是不允许重复的,是唯一的

            obj.name = 'skl';  //=》原有对象中存在name属性,此处属于修改属性

            obj.sex = '男';    //=》原有对象不存在SEX,此处相当于给当前对象新增一个属性SEX

            obj.['age'] = 12;  //=》

    [删]

        - 彻底删除(对象中不存在这个属性了)

            delete obj.age;

            delete obj['age']

            console.log(obj.age)  //undefined

        - 假删除:并没有移除这个属性,只是让当前属性的值为空

            obj.sex = null;

            obj['sex'] = null;

            console.log(obj.sex)    //null

    在获取属性值的时候,如果当前对象有这个属性名,则可以正常获取到值(哪怕是null),但是如果没有这个属性名,结果是undefined;

    // 一个对象中的属性名不仅仅是字符串格式的,还有可能是数字格式的

    var obj = {

        name: '哈哈',

        0: 100

    }

    obj[0] => 100

    obj['0'] => 100

    obj.0 =>Uncaught SyntaxError: Unexpected number

    obj[true] = 200;

        console.log(obj[true])  // 200

    obj[null] = 300

        console.log(obj[null])  // 300

    obj[undefined] = 400

        console.log(obj[undefined])  // 400

    obj[{}] = 500

        console.log(obj[{}])    // 500

    当我们存储的属性名不是字符串也不是数字的时候,浏览器会把这个值转换围殴字符串(toSting),然后再进行存储

        obj[{}] = 300;

    先把{}.toSting()后的结果作为对象的属性名为存储进来 obj['[object object]'] = 300

        obj[{}] =>获取的时候也是先把对象转换为字符串'[object object]',然后获取之前存储的300

    面试题:

    var one = new Object();

    var two = new Object();

    var map = new Object();

    map[one] = "one";  one = new Object ==》 map[new object] = map['[object object]'] = 'one'

    map[two] = "two"; two = new Object ==》 map[new object] = map['[object object]'] = 'two'

    alert(map[one]);  // two

    数组对象(对象由键值对组成的)

    obj oo = {

        a: 12

    };

    var arr = [0:12,1:23]  //12和23 都是属性值,属性名呢?

    数组也是对象

    数组也是对象

    通过观察结果,发现数组对象的属性名是数字(我们把数字属性名称称为当前对象的索引)

    arr[0]

    arr['0']

    arr.length

    arr['length']

    arr.0   //语法错误


    思考题:

    var obj = {

        name: '哈哈',

        age: 9,

        'haha': 11

    }

    var name = 'haha'

    obj.name  // 哈哈

    obj['name']  // 哈哈

    obj[name] == obj['haha']    //  11

    ```

    'name' 和 name的区别

        'name'是一个字符串的值,它代表的是本身

        name 是一个变量,不是值,他代表的是本身存储的这个值('haha')

    ```

    相关文章

      网友评论

          本文标题:object的基本操作

          本文链接:https://www.haomeiwen.com/subject/lrdsrqtx.html