好吧,我们可以在 javascript 中拥有私有标识符,但是受保护的标识符又如何呢?
就这么简单,我们能以某种方式模拟 Javascript 中的“受保护”可见性吗?
Simple as that, can we emulate the "protected" visibility in Javascript somehow?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这样做:
或者谷歌在第一页找到了这个:
http://blog.blanquera.com/2009/03/javascript-protected-methods-and.html
Do this:
Or a bit of google found this on the first page:
http://blog.blanquera.com/2009/03/javascript-protected-methods-and.html
当然可以。 这是另一个示例。
Sure you can. Here's another example.
这可能意味着什么? 您没有课程。
我想您可以分析
caller
来确定它是否满足允许调用方法的一组标准。 这将是极其低效的,而且你的标准总是会被欺骗。What could that possibly mean? You don't have classes.
I suppose you could analyze
caller
to determine whether it meets some set of criteria for being permitted to call a method. This will be hideously inefficient and your criteria will always be spoofable.这里有一个值得一提的有趣模式:JavaScript 构造函数可以返回任何对象(不一定是 this)。 人们可以创建一个构造函数,该函数返回一个代理对象,该对象包含“真实”实例对象的“真实”方法的代理方法。 这听起来可能很复杂,但事实并非如此。 这是一个代码片段:
好的一点是,如果我们定义命名受保护方法的约定,则可以自动创建代理。 我创建了一个小库,它正是这样做的: http://idya.github.com/oolib/
There's an interesting pattern worth mentioning here: a JavaScript contructor function may return any object (not necesserily this). One could create a constructor function, that returns a proxy object, that contains proxy methods to the "real" methods of the "real" instance object. This may sound complicated, but it is not; here is a code snippet:
The nice thing is that the proxy creation can be automated, if we define a convention for naming the protected methods. I created a little library that does exactly this: http://idya.github.com/oolib/