对象
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());