JavaScript基础篇(二): 浅谈Getter/Sette

2019-01-02  本文已影响0人  废材小熊猫

做为一名前端攻城师,基础必须要好,这一章就来简单的说说什么是get,什么是set。



get和set简单来说就是监听属性的取值、赋值动作。说道这里,你肯定很懵逼,你说清楚啊,这么说谁能懂? 既然这样,那来个简单的小栗子演示一下get和set的操作吧:
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>get/set</title>
</head>
<input type="text" v-model="test1">
<input type="text" v-model="test2">

<body>
    <script>
        let data = {
            test1: '',
            test2: ''
        };
        (function () {
            //input改变,更新data里面的数据。
            var dom = document.querySelectorAll('input');
            for (var i = 0; i < dom.length; i++) {
                if (dom[i].getAttribute('v-model')) {
                    let a = dom[i].getAttribute('v-model');
                    dom[i].oninput = function (e) {
                        data[a] = e.target.value;
                    };
                }
            };
            //data数据改变。更改Input的value。
            for (let list in data) {
                Object.defineProperty(data, list, {
                    get: function () {
                        return list;
                    },
                    set: function (value) {
                        list = value;
                        for (x = 0; x < dom.length; x++) {
                            if (dom[x].getAttribute('v-model')) {
                                let a = dom[x].getAttribute('v-model');
                                if (data[a] != a) {
                                    dom[x].value = data[a];
                                }
                            }
                        }
                    }
                });

            }
        })();
        //可在下面添加方法改变data下的值查看value是否改变。
    </script>
</body>

</html>

好的,大家能看到在上面的代码中,写了一个简单的双向绑定的例子来展示了get/set的使用,当修改输入框的值时:


test.gif

从上图中可以看到,修改了输入框的值,然后在控制台打印的时候,会触发get方法,返回对应的值打印到控制台上。
对应的,如果在修改了data里面test1,test2的值,就会触发set方法,并运行里面包含的逻辑代码,如下:


test2.gif
可以看到,当在控制台修改了data里面test1和test2的值时,输入框里对应的值也发送了改变,这就是set方法里面的逻辑。
好的,相信到了这里,打架对set和get方法已经有了比较深刻的认知,希望大家能在工作中对js基础进一步的加强,溜了溜了~
上一篇下一篇

猜你喜欢

热点阅读