Javascript的对象

66 阅读3分钟

对象

  • 对象是一个复杂数据类型

  • 是一个储存了一些基本数据类型的一个集合

    var obj = {
        num:100,
        str:'hello world',
        boo: true
    }
    
  • 这里的{}和函数中的{}不一样

  • 函数里面的是写代码的,而对象里面是写一些数据的

  • 对象就是一个键值对的集合

  • { }里面的每一个键都是一个成员

  • 也就是说,我们可以把一些数据放在一个对象里面,那么他们就互不干扰了

  • 其实就是我们准备一个房子,把我们想要的数据放进去,然后把房子的地址给到变量名,当我们需要一个数据的时候,就可以根据变量名里面存储的地址找到对应的房子,然后再去房子里找对应的数据。

创建对象

  • 字面量的方式创建一个对象

    //创建一个空对象
    var obj={}
    //像对象中添加成员
    obj.name='jack'
    obj.age='16'
    
  • 内置构造函数的方式创建对象

    //创建一个空对象
    var obj = new Object()
    ​
    //向对象中添加成员
    obj.name='Rose'
    obj.age=20
    
    * Object 是 js内置给我们的构造函数,用于船舰一个对象使用的
    

对象的基本操作

  • var obj = {}
    //点语法obj.键值:点语法会将后边的字符当成字符串来使用,而不是变量
    //增
    obj.name ='zhao'
    //改
    obj.name ='赵'
    //查
    document.write("姓名:"obj.name)
    //删除
    delete obj.name   //delete是js中的一个关键字,delete obj.name,就是把name这个键值给删除了
    ​
    ​
    //第二种方式
    var obj1={}
    //增
    obj1["name"]="zhao"
    //查
    document.write("姓名:"obj1["name"])
    //改
    obj1["name"]="xiaohzao"
    //删
    delete obj1["name"]
    //区别
    //键值需要加上”“不然就被认为是变量
    //第一种的特殊字符不规则命名的键值需要加上”“
    

对象的遍历

 //创建一个对象
var obj1={
      name: 'zhao',
      age:000,
      xingbei:'男'
    }
for(var i in obj1){
      console.log(obj1[i])
    }

数据类型之存储的区别

  • 既然我们区分了基本数据类型和复杂函数类型
  • 那么他们之间就一定存在一些区别
  • 他们最大的区别就是在存储上的区别
  • 我们存储空间分成两种
  • 栈:主要存储基本数据类型的内容
  • 堆:主要存储复杂数据类型的内容

基本数据类型内在内存中的存储情况

  • var num = 100,在内存中的存储情况
  • 直接在 栈空间 内有存储一个数据

复杂数据类型在内存中的存储情况

  • 下面这个对象的存储

    var obj ={
        name:'jack',
        age =18,
        gender:'男'
    }
    
  • 复杂数据类型的存储

    1. 在堆里面开辟一个存储空间
    2. 把数据存储到存储空间内
    3. 把存储空间的地址赋值给栈里面的变量
  • 这就是数据类型之间的存储区别

  • 更改对象内的键值

       //创建一个对象
        var obj={
          name: 'zhao',
          age:000,
          xingbei:'男'
        }
        //创建一个空对象
        var obj2 ={}
        for(var i in obj){
          obj2[i] = obj[i]
        }
        //打印输出
        console.log(obj,obj2)
        //更改obj2的name键值
        obj2["name"]="xiaozhao"
        console.log(obj,obj2)