Powered by md-Blog  文 - 篇  访客 -

用ES6的proxy重写一个格式化电话号码的例子


更新:2020-03-03 09:22:23  /  创建:2020-03-03 09:22:23  /  分类:写一个Demo  / 
不要删除
Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”。
const telFormat = {
    set(target, key, value) {
        target[key] = value.match(/[0-9]/g).join('');
    },
    get(target, key) {
        return target[key].replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3');
    }
};

const telNumber = new Proxy({}, telFormat);

telNumber.work = '137 8833 2299';
telNumber.home = '137 883 32299';

console.log(telNumber.work);    // 137-8833-2299
console.log(telNumber.home);    // 137-8833-2299
不要删除

小站不易,感谢支持!