JSON對象使用場景以及this 關鍵字的幾個方法


JSON對象

JSON.stringify 將 json或者json數組轉換成字符串json

  • 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在函數中的指向

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>

<script>

function fn(){
console.log(this);
console.log( arguments );
}
// fn.call();
// fn.call(2);
fn.call(2,3,4,5,6);

/*
call
1,沒有參數fn.call() 就相當於函數調用
2,有參數
第一個參數,就是這個函數調用時的this指向,從第二個參數開始,會當做實參傳入
* */
function fn(){
console.log(this);
console.log( arguments );
}
// fn.apply();
// fn.apply(2);
fn.apply(2,[3,4,5,6]);
/*
apply
沒有參數:fn.apply() 相當於函數調用
有參數
第一個參數是函數調用時的this指向,只有兩個參數,第二個參數,必須是數組,會將數組解析出來,數組的每個元素都會當成一個實參傳入
* */
</script>

</body>
</html>

bind方法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
function fn(){
console.log(this);
}
var fn2 = fn.bind(2);
fn2();
/*
bind調用,返回一個函數副本,這個函數副本中的this指向,指向了bind調用時穿的參數
* */
</script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM