Object.defineProperty()--數據劫持原理


數據劫持原理

html:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    let obj = {
        name: 'zs'
    }
    // 數據劫持的核心屬性
    Object.defineProperty(obj, 'name', {
        enumerable: true,
        configurable: true,
        get() {
            // 每次獲取對象的這個屬性的時候,就會被這個get方法給劫持到
            console.log('get執行了')
        },
        // 每次設置這個對象的屬性的時候,就會被set方法劫持到
        // 設置的值也會劫持到
        set(newValue) {
            console.log('set方法執行了');
            console.log(newValue)

        }
    })
</script>

</html>

在瀏覽器中打開;然后再控制台輸出obj.name,會得到下面的結果顯示:

obj.name
1.html:23 get執行了
undefined

接着再在控制台輸出’obj.name = ‘ls’`,結果如如下所示:

 

obj.name="ls"
1.html:28 set方法執行了
1.html:29 ls
"ls"


免責聲明!

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



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