一 对象
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.对象引用存储
引进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];