对象的基本操作

发布于 2020-03-24  335 次阅读


对象是 JavaScript 中的一种数据类型

是一个 引用数据类型
定义变量时,变量中存储的是 应用数据类型的内存地址
对象的具体数据,存储在
对象的变量名称,存储在
通过变量存储的内存地址, 找到堆中对象的 存储空间, 调用其中存储的数据

在 JavaScript 中 所有的 数据类型 本质上的存储方式 都是 对象

在 JavaScript 中 有句话 叫 万事万物皆对象

构造函数语法

    var 变量 = new 构造函数();

构造函数

Boolean()   生成布尔值的
String()    生成字符串的
Number()    生成数值的
Array()     生成数组的
Object()    生成对象的
Function()  生成函数的
        // 字面量方式定义数据类型
        var str = '北京';
        console.log( typeof(str) );  //string

        // 所有的数据类型,都可以通过 构造函数语法定义
        // 定义生成的统一都是 对象类型
        var strObj = new String('上海');
        console.log(strObj);  //string 0:上 1:海
        console.log(typeof(strObj));  //object

        var arr = new Array();
        console.log( typeof( arr ) );  //object

对象的生成方式

1,字面量方式

[] 定义的数组 {} 定义的是对象
对象中,存储数据的方式,必须是键值对
键名:数值  键名就是存储这个数据容器的名称   数值就是存储的数据内容
一个单元 是  键名 : 数值 的语法形式
对象中也是可以存储多个单元,每个单元之间使用逗号间隔
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
        } ;
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 变量 a 中存储键名 name
        var a = 'name';
        // 只是简单粗暴的在 obj1 中 找 a 这个键名
        // 直接结果就是 undefined
        console.log( obj1.a );  //undefined
        // 解析变量a中存储的 字符串 name 用 name这个存储的键名在 obj1 中调用数据
        // 实际调用的是 obj1['name']
        console.log( obj1[a] );  //张三

2,通过构造函数语法

        var obj2 = new Object();

对象的基本操作,类似于数组的操作

通过 对象.键名  或者  对象[键名] 来操作对象的单元

注意问题:

1, 如果键名是字符串,使用点语法调用,不要加引号
    使用[]语法调用,必须要给键名加引号
2, 对象支持所有的数据类型作为键名,如果是数值作为键名
    只能使用[]语法调用数据
3, 在 console.log 中看到的显示顺序,是浏览器的执行顺序
    与 我们JavaScript程序中定义的单元的顺序无关
4, 如果你需要通过变量,存储键名来调用数据
    必须使用 [] 语法 才能正确解析变量中存储的键名
    如果是变量,必要加引号
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 调用 对象中,单元的具体数据:
        // 对象.键名  或者 对象[键名]
        console.log(obj1.name);  //张三
        console.log(obj1['name']);  //张三
        console.log(obj1[1]);  //100
        // console.log(obj1.1);  //报错

console.log()

1,浏览器规定,有自己的显示顺序,按照数值,字母,顺序显示
2,会显示 数组,对象等引用数据类型,最终的执行效果
    先输出,后修改数组对象,也会显示修改的最终结果
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 当前位置 对象,并没有改变
        // 只是浏览器的console.log(),把结果提前输出了
        console.log(obj1);  //{1: 100, name: "张三", age: 18, sex: "男"}

新增: 对象.键名 = 键值   对象[键名] = 键值

对不存在的键名进制赋值操作,就是新增对象的单元
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 新增单元
        obj1.addr = '北京';
        obj1['phone'] = 123456789;
        console.log(obj1);   //{1: 100, name: "张三", age: 18, sex: "男", addr: "北京", phone: 123456789}

修改: 对象.键名 = 键值   对象[键名] = 键值

对已经存在的键名进制赋值操作,就是修改对象的单元
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 修改单元
        obj1.name = '李四';
        obj1['sex'] = '女';
        console.log(obj1);   //{1: 100, name: "李四", age: 18, sex: "女"}

删除: delete( 对象.键名 )   /  delete( 对象[键名] )

delete 对象.键名     /  delete 对象[键名]
        var obj1 = {
            name:'张三',
            age:18,
            sex:'男',
            1:100,
        } ; 
        // 删除对象的单元
        delete( obj1.name );
        delete obj1['sex'];
        console.log(obj1);   //{1: 100, age: 18}

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。