Javascript 如何正确映射函数构造函数?
Me和Smurfette正在将本机函数映射到我们称之为smurfy的新名称空间Javascript 如何正确映射函数构造函数?,javascript,Javascript,Me和Smurfette正在将本机函数映射到我们称之为smurfy的新名称空间 SMURF 为此,我们通过在正确的上下文中从with调用函数来确保并映射正确的值。有很多方法可以做到这一点,但这只是其中之一 比如说, SMURF.getComputedStyle = function(){ return win.getComputedStyle.apply(win, arguments); }; 然而,对于OO风格的函数和对象,这将如何实现呢?特别是, SMURF.FormData = w
SMURF
为此,我们通过在正确的上下文中从with调用函数来确保并映射正确的值。有很多方法可以做到这一点,但这只是其中之一
比如说,
SMURF.getComputedStyle = function(){
return win.getComputedStyle.apply(win, arguments);
};
然而,对于OO风格的函数和对象,这将如何实现呢?特别是,
SMURF.FormData = win.FormData;
这可以用同样的方式吗
调用机制是不同的,这就是为什么我们要问
new SMURF.FormData();
相对于
SMURF.getComputedStyle();
这是一本书
我猜隐含的问题是,apply
可以用于函数构造函数吗
澄清:
与IE9之前的版本无关。对于作为窗口对象的方法实现的非泛型方法,您可以使用
。bind
,例如:
SMURF.setTimeout = setTimeout.bind(window);
如果该方法是泛型的或构造函数,则只需执行以下操作
SMURF.x = window.x
e、 g
会很好用的
请注意,在IE8
中,call
(因此也包括任何.bind
垫片)无法正确更改主机对象的上下文。请删除所有这些smurf胡言乱语(从技术上讲,这是商标侵权,而且是错误的)。更严肃地说,你的问题令人困惑。请尝试重写它,并包括你预期的结果。@smurfbrainy cool trolling,与其思考,不如尝试一下(或者,发展对语言的理解)
SMURF.FormData = FormData;