如何正确映射函数构造函数
How to properly map function constructors?
Me和Smurfette正在将本机函数映射到一个新的smurfy命名空间,我们称之为
SMURF
为了做到这一点,我们通过在正确的上下文中从中调用函数,来确保并映射这个值的正确值。有很多方法可以做到这一点,但这只是其中之一。
例如,
SMURF.getComputedStyle = function(){
return win.getComputedStyle.apply(win, arguments);
};
但是,对于OO风格的函数对象,该如何做到这一点呢?特别是
SMURF.FormData = win.FormData;
这可以用同样的方式吗?
呼叫机制不同,这就是我们为什么要问的原因。
new SMURF.FormData();
与相反
SMURF.getComputedStyle();
这里有一个相关的问题。
我想隐含的问题是,apply
可以用于函数构造函数吗?
澄清:
与Pre-IE9 无关
对于作为窗口对象的方法实现的非泛型方法,您可以使用.bind
,例如:
SMURF.setTimeout = setTimeout.bind(window);
如果该方法是泛型或构造函数,您可以只执行
SMURF.x = window.x
例如
SMURF.FormData = FormData;
会很好用的。
请注意,在IE8中,.call
(因此也包括任何.bind
填充程序)无法正确更改主机对象的上下文。
相关文章:
- 如何运行对象映射函数
- typescript定义构造函数或函数
- JavaScript模块模式-如何在使用对象/函数之前激发构造函数/init函数
- 角度和内置的javascript映射函数
- 如何在运行时访问typescript类公共属性(调试)?只有构造函数和函数是可访问的
- 在javascript中调用构造函数中函数的对象
- 将值传递给映射函数-CouchDB
- 接受多个数组作为参数的javascript映射函数
- CouchDB-映射函数中的变量
- 构造函数中的方法和创建构造函数后函数上的方法有什么区别
- 如何使用数组和映射函数构建 JavaScript 对象
- 如何在 Javascript 中添加和调用来自构造函数的函数(使用 JQuery)
- 任何转换对象*值*的Javascript或Coffeescript“映射”函数
- 映射函数反应中的错误
- 如何获取要在 lodash 映射函数中用作变量的键
- JavaScript 数组映射函数不会更改字符串中的元素
- 如果在映射函数中 reactjs 元素的内部循环
- 带有拼接的javascript中的映射函数
- 是否可以将映射集合名称的名称作为MongoDB映射函数中键的一部分
- 如何正确映射函数构造函数