JavaScript对象基础

273 阅读2分钟

一 对象

1.创建对象的方法

var obj=new Object();       //构造函数创建法
var obj={};                 //字面量创建法
var obj=Object.creat({});

2.给key和value赋值

var obj={
//key : value,
name:"ahahha",
//字符型key
"name","hahah",
//变量型key
[i]:16,
//数字型key
5:6,}
如果key不是字符串:
点语法拒绝使用非字符串类型属性。
在对象中key除了字符串外,只识别symbol类型,所以输入的非字符串属性隐性转换成symbol类型。

3.对象引用存储

  • (1)对象存储在堆中
引进JSON
①console.log(String(obj));           //打印结果为[object Object]。
②var str = JSON.shringify(obj);   //对象转换为JSON格式的字符串。
③var obj = JSON.parse(str);        //将具有对象模式的字符串转换为对象。
④当字符串不符合对象模式时,报错为:Uncaught SyntaxError: Unexpected token b in JSON at position 7  at JSON. parse (<anonymous>)
  • (2)对象的引用关系 ①如果var obj1 = obj,则obj和obj1的值都是引用地址,所以当改变对象内容时,两个都会发生改变。 ②判断对象是否相等,仅判断地址,而不是简单地判断对象的内容。 ③若使用JSON.stringify(obj1)===JSON.stringify(obj2)时,有时会报错存在漏洞。 ④当出现堆栈上限溢出时报错为:Uncaught RangeError:Maximum call stack size exceeded
垃圾回收机制
☆什么是内存泄漏:
    在堆中的对象可以被若干个变量引用其地址,如果这个对象在后面的内容中不再被使用,我们需要将堆中的这个对象清除,否则,不会被浏览器自动清除,这样就会造成垃圾的产生。当不断产生这种垃圾时,我们就把这种情况叫作内存泄漏。

☆☆如何处理内存泄漏:
    先创建每个对象的管理池,针对每个对象所引用它的变量做统一存储管理,如果需要清理该对象时,将引用它的所有变量设置为null,当内存上限达到峰值时,系统会通过垃圾回收车将这些堆中无引用的对象全部清除回收,这就是垃圾回收机制。
  • (3)对象的遍历 ①广度遍历: for(var prop in obj){ console.log(prop,obj[prop]); } ②深度遍历 有漏洞的一中遍历: var str = JSON.stringify(obj); 对象的遍历是通过添加属性的先后顺序遍历的。
  • (4)对象的复制 ①广度复制 var obj1={}; for(var prop in obj){ ojb1[prop]=ojb[prop]; } ②深度复制 var ojb1=JSON.parse(JSON.stingify(obj));

4.删除对象

delete obj[key];