vbscript - 通过函数从数组返回对象

时间:2014-01-28 10:14:29

标签: asp-classic

我一直在网上寻找一种方法来制作一个vbscript函数来返回我创建的对象:

<%

dim myArray(5)
set myArray(5) = new MyClass

for i = 0 to 5
response.write("i :" & i & "<br/>")
set myArray(i) = new MyClass
myArray(i).MyText = "Number " & i
next

class MyClass

    public MyText

End class

function getMyClass(text)

    set getMyClass = new MyClass
    getMyClass.MyText = text

end function


    response.write(getmyclass("Here!").mytext & "<br/>")

function getMyArray(number)

    response.write("check: " & myArray(number).MyText & "<br/>")
    set getMyArray = new MyClass
    getMyArray = myArray(number)

end function

    response.write(getMyArray(1).mytext)

%>

这是我得到的错误:

Microsoft VBScript运行时错误“800a01b6”

Object不支持此属性或方法

/ carousel classes / funcarray.asp,第32行

它指的是函数“getMyArray(number)”

1 个答案:

答案 0 :(得分:1)

我不得不重新编码以使其正常工作......

<%

dim myArray(5), i

for i = 0 to 5
    response.write("i :" & i & "<br/>")
    set myArray(i) = new MyClass
    myArray(i).MyText = "Number " & i
next

class MyClass

    public MyText

End class

function getMyClass(text)
    dim rv
    set rv = new MyClass
    rv.MyText = text
    set getMyClass = rv
end function

response.write(getmyclass("Here!").mytext & "<br/>")

function getMyArray(number)
    response.write("check: " & myArray(number).MyText & "<br/>")
    set getMyArray = myArray(number)
end function

response.write(getMyArray(1).mytext)

%>

注意:

我删除了第二行,因为它没有按照你的想法行事。

我发现getMyClass函数的问题在于,只要Set函数名称,就会返回值,并且不会将值传递给MyText字段。

第二个函数几乎就在那里,只需要将函数名称Set添加到其中一个预定义的数组条目中。