js监听input值变化_JS编程实用技巧:监听变量数据变化。

在JS编程中,如果能监测变量的内容,当变量值发生变化时,实时发出通知,这定是一项很有用的功能。

27a9b19631cbdd234aa36e3d1a935830.png

下面就来实现它。

监听效果

先来看效果,当变量值发生变化时,自动提示出旧值和新值:

6f053672a27df97af6be39723c7962bc.png

实现方式

用一个例程实现上述效果。

一个js、一个html。

js内容:

ed9be85e8eb2bbb02cda923307070d3d.png
/*** @desc 属性改变监听,属性被set时出发watch的方法,类似vue的watch* @study https://www.jshaman.com/* @constructor * @param {object} opts - 构造参数. @default {data:{},watch:{}};* @argument {object} data - 要绑定的属性* @argument {object} watch - 要监听的属性的回调 * watch @callback (newVal,oldVal) - 新值与旧值 */class watcher{    constructor(opts){        this.$data = this.getBaseType(opts.data) === 'Object' ? opts.data : {};        this.$watch = this.getBaseType(opts.watch) === 'Object' ? opts.watch : {};        for(let key in opts.data){            this.setData(key)        }    }    getBaseType(target) {        const typeStr = Object.prototype.toString.apply(target);            return typeStr.slice(8, -1);    }    setData(_key){        Object.defineProperty(this,_key,{            get: function () {                return this.$data[_key];            },            set : function (val) {                const oldVal = this.$data[_key];                if(oldVal === val)return val;                this.$data[_key] = val;                this.$watch[_key] && typeof this.$watch[_key] === 'function' && (                    this.$watch[_key].call(this,val,oldVal)                );                return val;            },        });    } }

html内容:

6495b6390ce6c500f299798e474a3379.png
   wathch

将两个文件存放在同一目录下,打开html文件即可看到效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值