Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript部分应用程序_Javascript_Prototype - Fatal编程技术网

Javascript部分应用程序

Javascript部分应用程序,javascript,prototype,Javascript,Prototype,我试图用currying预言函数原型,但我得到了意想不到的结果。它在某些情况下可以正常工作,但并非所有情况下都可以 以下是我使用预兆原型的代码: Function.prototype.method = function(name, func) { if(!this.prototype[name]){ this.prototype[name] = func; } return this; }; Function.method("curry-left", function()

我试图用currying预言函数原型,但我得到了意想不到的结果。它在某些情况下可以正常工作,但并非所有情况下都可以

以下是我使用预兆原型的代码:

Function.prototype.method = function(name, func) {
  if(!this.prototype[name]){ 
    this.prototype[name] = func;
  }
  return this;
};

Function.method("curry-left", function(){
  var slice = Array.prototype.slice; 
  var that = this;
  var args = slice.call(arguments,0);
  return function(){
    that.apply(null, args.concat(slice.call(arguments,0)));
  }
});
我正在使用以下代码对其进行测试:

function print(arg1, arg2){
  console.log(arg1 + ", " + arg2);
}

print["curry-left"]("hej")("då"); // prints hej, då

var op = {"+":function(a,b){return a + b;}}

console.log(op["+"]["curry-left"](1)(2)) // prints undefined
我试过调试它,它似乎是原型中的
变量,把一切都搞糟了,但我不知道为什么。如果我做了
console.log(那)
我得到的结果是
[函数]
,这似乎是正确的

如果我能让它在两种情况下都工作,那就太好了


提前感谢

问题是您的内部函数没有返回结果:

Function.method("curry-left", function(){
  var slice = Array.prototype.slice; 
  var that = this;
  var args = slice.call(arguments,0);
  return function(){
    that.apply(null, args.concat(slice.call(arguments,0)));
    ^
  }
});
修复方法:

return that.apply(null, args.concat(slice.call(arguments,0)));

应该是一个局部变量,所以
var那=这个。谢谢,已修复,但无法解决问题issue@user25470别担心,西斯会发生:)