javascript - 如何制作一个功能,使功能?
问题描述
好的,现在是凌晨 3 点,这个愚蠢的问题让我保持清醒,整夜困扰我,基本上我想做的是创建一个函数,将现有函数作为参数返回构造函数,也许这会很明显阅读我的代码
var f = function() {
return function(p) {
return document.createElement(p)
}
};
var x = f();
alert(x); //alerts function(p){ return document.createElement(p)}
var n = x("div"); //it creates div Element
alert(n); // alert [object HTMLDivElement]
上面的代码工作得很好,但我想使用变量而不是将 createElement 直接放在构造函数中,我想像这样将它作为参数传递给函数 f
var f = function(dd) {
return function(p) {
return dd(p)
}
};
var x = f(document.createElement);
alert(x); //alerts function(p){ return dd(p)}
var n = x("div"); //doesn't createElement
alert(n); //doesn't alert
除此之外,最后一个代码在控制台非法调用中输出了一些奇怪的东西,我不知道 wmy 代码出了什么问题,请帮忙?
解决方案
您必须将createElement
方法绑定到document
对象。否则,您正在调用一个方法,但它没有正确的上下文。
var f = function(dd) {
return function(p) {
return dd(p)
}
};
var x = f(document.createElement.bind(document));
alert(x);
var n = x("div");
alert(n);
箭头函数版本将是
var f = dd => p => dd(p);
var x = f(document.createElement.bind(document));
alert(x);
var n = x("div");
alert(n);