-
JSON.parse
是將 json 格式的字符串轉換為 js 的對象或者數組var obj = {
name: 'Jack',
age: 18,
gender: '男'
}
var arr = [
{
name: 'Jack',
age: 18,
gender: '男'
},
{
name: 'Jack',
age: 18,
gender: '男'
},
{
name: 'Jack',
age: 18,
gender: '男'
}
]
var jsonObj = JSON.stringify(obj)
var jsonArr = JSON.stringify(arr)
console.log(jsonObj)
console.log(jsonArr)
對象深克隆
var obj = {
a:10,
b:20,
c:{
a:10
}
};
var obj2 = JSON.parse(JSON.stringify(obj));
console.log(obj2);
obj2.c.a=20;
alert(obj.c.a);//10-
jsonObj
就是 json 格式的對象字符串 -
jsonArr
就是 json 格式的數組字符串
-
使用場景:
1,對象的深克隆
2,緩存的存儲
3,前后台數據傳輸解析
this 關鍵字 主要用於函數中 不同的場景下 指向不同
//普通函數 window
function fn(){
console.log(this);
}
fn(); //window
//事件函數 指向事件源
var btn = document.querySelector('button');
btn.onclick = function(){
console.log(this);//button 事件源
}
//定時器 中也是window
setInterval(function(){
console.log(this); //window
},1000);
//預保留this
//事件函數中嵌套了內層函數,需要在內層函數中使用this得到事件源(this指向window)
var btn = document.querySelector('button');
btn.onclick = function(){
var _this = this;
setInterval(function(){
console.log(_this);
},1000);
}
//this在對象的方法中,指向 調用這個方法的對象
var obj ={
name:"小明",
act:function(){
console.log(this.name);
},
c:{
name:"小紅",
b:function(){
console.log(this.name);
}
}
}
obj.act();
obj.c.b();
call() apply() bind() 可以改變this在函數中的指向
bind方法