微信小程序无法访问window,如何添加全局顶级方法或属性?直接全局顶层调用!

众所周知小程序中的wx对象存在许多封装好的方法,我们可以在全局直接通过wx.$name 直接调用,那我们又该如何去自己定义类似这样的顶级对象或者方法呢? 

在传统浏览器中有个顶级的window对象,我们可以直接向其注入我们的全局方法或者属性,但在小程序中却行不通,因为我们在全局无法直接访问到window对象,虽然你可以在开发者工具的控制台中get到。

但我们可以另辟蹊径,既然没有window对象,我们可以找Object!!, 毕竟“js中一起皆对象”,原型链顶层就是我们的Object,故此我们可以这样做

Object.defineProperty(Object.prototype, "Zero", {
  value: {
    dateFormat(time) {
      let date = new Date(time);
      let y = date.getFullYear();
      let m = date.getMonth() + 1;
      let d = date.getDate();
      let h = date.getHours();
      let i = date.getMinutes();
      let s = date.getSeconds();
      return y + "-" + m + "-" + d + " " + h + ":" + i + ":" + s;
    },
  },
  configurable: false,
  enumerable: false,
});

 当然我们也可以直接向wx 对象中添加自己的方法,甚至对其原生方法做出一些修改和拓展

Object.defineProperty(wx, "dateFormat", {
  value() {
    function dateFormat(time) {
      let date = new Date(time);
      let y = date.getFullYear();
      let m = date.getMonth() + 1;
      let d = date.getDate();
      let h = date.getHours();
      let i = date.getMinutes();
      let s = date.getSeconds();
      return y + "-" + m + "-" + d + " " + h + ":" + i + ":" + s;
    }
    return dateFormat.apply(this, arguments);
  },
  configurable: false,
  enumerable: false,
});

 之后我们便可以直接进行全局使用,对于一些特殊场景还是非常有用的

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值