我知道我的标题可能不是很清楚,我会尽我所能解释我想实现的目标。Javascript,对象原型 - 避免写完整路径
我知道修改的原型是在一般皱着眉头,并有很好的理由,所以我试图找出一种方法来做到这一点,不添加任何多个项目的原型。
我知道,我可以简单地做一些沿
Object.prototype.collection = {};
Object.prototype.collection.method1 = function(){ . . . };
Object.prototype.collection.method2 = function(){ . . . };
Object.prototype.collection.method3 = function(){ . . . };
etc.
再行每当我想用的方法之一,我可以打电话给
objectInstance.collection.method1();
这个是问题最终它会变得非常罗嗦和乏味,更不用说如果你从这个集合中调用了一百种方法,那么百次的“收集”这个词是多余的,并且浪费了字节。
所以我希望有一种以这种方式创建方法的技术,而不必每次都写完整的路径。即我可以写
objectInstance.method1();
它会知道在哪里看。在这一点上
我的思维过程是显然调用后者将抛出一个method does not exist
错误。但是我很好奇,如果有任何拦截此错误的方式?
例如,在PHP中存在spl_autoload_register()函数,当一个类没有定义被称为,让你做一切必要加载/定义它。这种情况有没有同等的策略?
也许我可以添加一个次要“回退”的方法,像这样:
Object.prototype.fallback = function(undefinedMethod){
if(this.collection.undefinedMethod){
this.collection.undefinedMethod();
}
};
,只是有这个所谓的每一次的方法是不确定的,传递的方法。
任何沿着这些线的任何帮助,或者如果它甚至可能,将不胜感激。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy –
我要去一个例子看看更多,但它看起来正是我需要的!非常感谢! –
只要确保你的主机支持这一点,它应该做你需要的。让我知道如果这适合你,我可以发布这个答案。 –