所有属性的 JavaScript getter [英] JavaScript getter for all properties

查看:28
本文介绍了所有属性的 JavaScript getter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

长话短说:我想要一个 PHP 风格的 getter,但在 JavaScript 中.

Long story short: I'm in a situation where I'd like a PHP-style getter, but in JavaScript.

我的 JavaScript 仅在 Firefox 中运行,因此我可以使用 Mozilla 特定的 JS.

My JavaScript is running in Firefox only, so Mozilla specific JS is OK by me.

我能找到的制作 JS getter 的唯一方法需要指定其名称,但我想为 所有 可能的名称定义一个 getter.我不确定这是否可行,但我很想知道.

The only way I can find to make a JS getter requires specifying its name, but I'd like to define a getter for all possible names. I'm not sure if this is possible, but I'd very much like to know.

推荐答案

Proxy 可以做到!我很高兴这存在!!这里给出了一个答案:是否有与 python 的 __getattr__ 等效的 javascript方法?.用我自己的话说:

Proxy can do it! I'm so happy this exists!! An answer is given here: Is there a javascript equivalent of python's __getattr__ method? . To rephrase in my own words:

var x = new Proxy({}, {
  get(target, name) {
    return "Its hilarious you think I have " + name
  }
})

console.log(x.hair) // logs: "Its hilarious you think I have hair"

代表胜利!查看 MDN 文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

Proxy for the win! Check out the MDN docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

适用于 chrome、firefox 和 node.js.缺点:在 IE 中不起作用 - 该死的 IE.很快.

Works in chrome, firefox, and node.js. Downsides: doesn't work in IE - freakin IE. Soon.

这篇关于所有属性的 JavaScript getter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆