JavaScript对象实例委派/转发
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript对象实例委派/转发,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1235字,纯文字阅读大概需要2分钟。
内容图文
![JavaScript对象实例委派/转发](/upload/InfoBanner/zyjiaocheng/770/9739f258db1b4d0bbc06a423431114e7.jpg)
我想在这里变聪明.假设我写了一个包装其他类的实例的类,重写了一个或两个方法,但是将所有其他方法调用直接传递给了委托对象.
function Wrapper(delegate) {
this._delegate = delegate;
}
Wrapper.prototype.example = function() {
console.log('Doing something in wrapper');
this._delegate.example();
};
如果委托有100个其他方法(夸大,授予),而不是在我的Wrapper中为每个方法定义一个方法,那么在JavaScript中有一种优雅的方法吗?
我已经考虑过在实际实例上进行方法调整/代理,即
Wrapper.wrap = function(delegate) {
var example = delegate.example;
delegate.example = function() {
example.call(this, arguments);
console.log('Forwarded an overridden method call!');
};
return delegate;
};
但我宁愿不修改实例,如果我可以避免它.
解决方法:
在javascript中扩展对象的一般方法不是以你完成的方式包装它,而是要求你将每个方法调用转发给实际的对象.因此,除非您有特定的理由被迫这样做,否则只需向现有对象添加新方法和属性就好了.然后,所有现有的方法和属性“只是工作”,而不必做任何特殊的事情.如果要替换某些方法,可以提供自己的实现,但所有以前存在的方法都将继续工作.
假设您有一个名为foo的现有对象,并且您想要覆盖一个名为create()的方法.你可以这样做:
foo.origCreate = foo.create;
foo.create = function(x, y) {
// do whatever you want here in the override
// including calling the origCreate method if you want
}
内容总结
以上是互联网集市为您收集整理的JavaScript对象实例委派/转发全部内容,希望文章能够帮你解决JavaScript对象实例委派/转发所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。