美文网首页
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