Javascript 如何使用函数名设置function.prototype.property

Javascript 如何使用函数名设置function.prototype.property,javascript,prototype,Javascript,Prototype,我有一个printName函数,如下所示: function printName(name) { console.log('Name is': , name); } 现在我想执行printName.callAfter(3000,'foo'),它应该记录 3秒后“Name is:foo” 我试着写: myName.prototype.callAfter = function(time, name) { setTimeout(function() { printName(name)

我有一个printName函数,如下所示:

function printName(name) {
  console.log('Name is': , name);
}
现在我想执行
printName.callAfter(3000,'foo')
,它应该记录

3秒后“Name is:foo”

我试着写:

myName.prototype.callAfter = function(time, name) {
  setTimeout(function() {
    printName(name)
  }, time);
}
但它只将myName.prototype.callAfter作为已定义函数提供给我,但myName.callAfter未定义


请帮忙。提前谢谢

我想我有你想要的在这个JSFIDLE工作的东西:


您应该应用的原型(字面上)是
函数
而不是函数的名称。执行此操作后,可以对任何定义的函数执行
callAfter

下面的内容似乎符合您的要求

函数printName(名称){
console.log('名称为:',名称);
}
Object.defineProperty(Function.prototype,“callAfter”{
值:函数(延迟,参数){
var func=此;
setTimeout(函数(){
函数应用(函数,参数);
},延误);
}
});
打印名(“即时”);

printName.callAfter(3000,[“3秒后])
在您的
printName
函数中,
name
来自哪里?您的意思是接受它作为参数,还是使用
this.
,还是它确实来自包含的上下文?
myName
不是由您的代码定义的。您应该得到一个引用错误。请尝试在问题中提供@jass:
printName
,它不接受任何参数。那么再说一遍:你是说它的参数列表中有
name
?如果是,请编辑问题以解决此问题。实时示例也属于该问题(通过堆栈片段,
[]
工具栏按钮),而不属于其他站点。非现场链接腐烂,人们不应该去非现场帮助你。哦,对不起,我的坏。是的,它接受名称作为参数谢谢澄清。这就是我真正想要使用的:)
function printName(name) {
  console.log('Name is: ' , name);
}

printName.callAfter = function(time, name) {
  setTimeout(function() {
    printName(name)
  }, time);
}

printName.callAfter(3000, 'foo');