js基础--对象

51 阅读2分钟

对象

js一切皆对象

需要描述一些特性的时候需要用到对象

对象由属性和方法两部分构造

创建方式

  • 隐式创建(json格式创建)

    var obj = {}
    
  • 实例化Object

    var obj=new Object();
    
  • 实例化自定义构造函数

    function Ani(){}
    var obj = new Ani();
    
  • 实例化类

    class Ani{}  
    var dog=new Ani();
    

对象的增删改查

对象的增/赋值

  • 声明的同时赋值

    var obj ={
        属性名:属性值,
        属性名:属性值
    }
    var obj ={
          name:"cup",
        coler:"red",
        price:10
    
    }
     var obj= new Objaect({color:"red",price:200}) 
    
  • 先声明后赋值:对象名.属性名=属性值

    var obj ={};
    obj.name="zhangsan";
    obj.age=20;
    obj.hobby=[];
    obj.eat=function(){}
    

对象的访问

//访问属性
对象.属性名
对象["属性名"]

//访问方法
对象.方法名;  //输出的是函数
对象.方法名();  //调用函数
对象["方法名"]();

对象修改

//修改属性
对象.属性名=新的属性值
对象["属性名"]=新的属性值

//修改方法

对象.方法名= 新的方法  

对象的删除

  • 删除对象

    对象= null
    
  • 删除对象的属性和方法

    delete 对象.属性名;
    delete ["对象.属性名"];
    delete 对象.方法名;
    delete 对象.["方法名"];
    

对象的遍历

for(var i in obj){
    //i 属性名-> 键
    //object[i] 属性值;->值
    //键值对
}

对象拷贝

对象拷贝:浅拷贝。深拷贝

  • 浅拷贝:拷贝的是引入地址,如果原对象修改后新会修改

    • 直接赋值
    • var newobj = Object.assgin(要拷贝的对象)
  • 深拷贝:将对象在堆区进行拷贝,如果元对象修改后,新对象不会修改

    • Object.assgin({},要拷贝的对象) 只能拷贝第一层级

    • JSON.parse(JSON.stringify(要拷贝的对象)) 拷贝过程中会将函数丢失

      JSON.stringify 转为 字符串

      JSON.parse 转为 对象

对象封装

对象中包含属性和方法

面向对象和编程 的第一步,就是要生成对象,

主要是基于构造函数和原型链。

构造函数就是专门用来生成实例对象的函数

  • 工厂函数 - 不建议使用

    function obj(){
                var obj1 ={}  
                obj1.name = "张三";
                obj1.age=20;
                obj1.height="180cm";
                return obj1
            }
    var newobj = obj();
    console.log(obj());