我有一个printName函数,如下所示:
function printName(name) {
console.log('Name is': , name);
}
现在我要执行printName.callAfter(3000, 'foo')
,这应该记录
'名字是:foo'3秒后。
我试着写:
myName.prototype.callAfter = function(time, name) {
setTimeout(function() {
printName(name)
}, time);
}
但它只将 myName.prototype.callAfter 作为已定义的函数,但myName.callAfter未定义。
请帮忙。提前致谢
答案 0 :(得分:1)
您应该应用的原型是(字面意思)Function
而不是函数的名称。执行此操作后,您可以对任何已定义的函数执行callAfter
。
以下似乎可以做你想做的事。
function printName(name) {
console.log('Name is: ' , name);
}
Object.defineProperty(Function.prototype, "callAfter", {
value: function(delay, args) {
var func = this;
setTimeout(function(){
func.apply(func,args);
}, delay);
}
});
printName("Instant");
printName.callAfter(3000,["After 3 seconds"]);

*(我在Object.defineProperty
使用callAfter
,因此queryParams: ['isFromJSP', 'data'],
isFromJSP: false,
data: [],
不是可枚举的,这在扩展内置原型时经常很重要。) *
你应该知道扩展内置对象有一些需要注意的问题。
答案 1 :(得分:-1)
我想我有你想在这个jsfiddle工作的东西:https://jsfiddle.net/kd13ugwt/
Option Explicit
Sub createPDFfiles()
Dim ws As Worksheet
Dim Fname As String
Dim mypath As String
mypath = ActiveWorkbook.path
For Each ws In ActiveWorkbook.Worksheets
On Error Resume Next 'Continue if an error occurs
Fname = mypath & ws.Index & "_result"
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=Fname, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False
Next ws
End Sub