ASP GetRef 函数指针试探

来源:asp之家 时间:2011-03-16 11:09:00 

GetRef 函数
返回一个指向一过程的引用,此过程可绑定某事件。
Set object.eventname = GetRef(procname)
参数
object
必选项。事件所关联的对象的名称。
eventname
必选项。要与函数绑定的事件的名称。
procname
必选项。该字符串中包含 Sub 或 Function 过程的名称,该过程与事件关联。
说明
GetRef 函数可以用来将 VBScript 过程 (Function 或 Sub) 与 DHTML (动态 HTML)页面中可用的任何事件联系在一起。DHTML 对象模型为不同对象提供了与各种可用事件有关的信息。
在其他脚本和程序设计语言中,GetRef 所提供的功能被称为函数指针,即它指向了在指定事件发生时要执行的过程的地址。
下面的例子说明了 GetRef 函数的使用:

代码如下:


<SCRIPT LANGUAGE="VBScript"> 
Function GetRefTest() 
Dim Splash 
Splash = "GetRefTest Version 1.0" & vbCrLf 
Splash = Splash & Chr(169) & " YourCompany 1999 " 
MsgBox Splash 
End Function 
Set Window.Onload = GetRef("GetRefTest") 
</SCRIPT> 

大概意思是为绑定事件所用,因为本人对ASP中事件了解不多,所以在这里对GetRef和事件的关系也不做过多的讨论。这里只研究下WEB开发应用中GetRef的用处。
在PHP里面,PHP不支持指针,因此无法使用函数指针这一技术。PHP支持所谓的“函数变量”,可以把函数赋予某个变量,其作用类似于函数指针。
简单点的例子:
PHP里面可以这么做

代码如下:


<?php 
$funcname = "cutstr"; 
echo $funcname(); 
function cutstr() { 
return "function"; 

?> 
有了GetRef,类似上面的功能ASP也可以实现: 
<% 
dim funcname 
funcname = "cutstr" 
response.Write(getref(funcname)) 
function cutstr() 
cutstr = "function" 
end function 
%> 
实际应用:
在做后台管理的项目时,比如新闻添加,删除,修改,等操作在同一个页面处理,一般我们会在form里面插入一个隐藏域action,或者url参数action,根据action的值来判断操作哪一步。通常这么写:

select case request.querystring("action") 
case "add" : '要操作的代码段.... 
case "modify" : '要操作的代码段.... 
end select 或者使用if else
使用“函数变量”可以使代码更加简洁、清晰,附上一个完整的例子,该例是后台中常用的一种操作。修改、删除、添加。
可以使用?action=×××来测试结果

代码如下:


<% 
option explicit 
dim array_action 
'合法的模块名 
array_action = array("list","add","add_form","modify","modify_form","del") 
'输出 
response.write(getref(action)) 
'检验参数是否合法 
function action() 
dim str : str = request.querystring("action") 
action = array_action(0) 
if arr_in(array_action,str) then action = str 
end function 
'操作部分---------------------- 
function list() 
list = "显示列表信息" 
end function 
function add() 
add = "执行添加操作" 
end function 
function add_form() 
add_form = "显示添加表单" 
end function 
function modify() 
modify = "执行修改操作" 
end function 
'------------------------------ 
'检测是否存在于数组 
function arr_in(a,v) 
arr_in = false 
dim i 
if isarray(a) then 
for each i in a 
if i = v then : arr_in = true : exit for : end if 
next 
end if 
end function 
%> 


很多帖讨论ASP、PHP、.NET,到底哪个强,个人认为不是语言的问题,而是思想的问题,网站功能原理了解了,用什么语言写都一样,效率高不高、代码是否简洁明了,那就看自己的水平了。欢迎大家讨论!

标签:GetRef,函数指针
0
投稿

猜你喜欢

  • Python实现账号密码输错三次即锁定功能简单示例

    2023-07-22 07:40:21
  • Mysql查询日期timestamp格式的数据实现

    2024-01-22 08:59:55
  • 利用PyQt5中QLabel组件实现亚克力磨砂效果

    2023-12-13 18:33:04
  • mysql group by having 实例代码

    2024-01-17 09:34:48
  • python基于celery实现异步任务周期任务定时任务

    2021-06-14 05:20:26
  • CSS 那些事儿

    2008-12-02 18:19:00
  • 使用python flask框架开发图片上传接口的案例详解

    2021-12-26 05:54:30
  • 基于django channel实现websocket的聊天室的方法示例

    2023-11-26 18:34:43
  • Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解

    2021-07-16 07:40:40
  • sqlserver主键自增的实现示例

    2024-01-16 22:41:10
  • Golang限流库与漏桶和令牌桶的使用介绍

    2024-05-10 13:57:50
  • 关于人物角色设计讨论

    2008-10-16 13:47:00
  • python使用tensorflow保存、加载和使用模型的方法

    2021-01-25 13:19:26
  • Python 虚拟环境迁移到其他电脑的实现

    2023-04-16 19:08:13
  • python书籍信息爬虫实例

    2023-11-17 11:15:49
  • js+html制作简单验证码

    2024-04-19 10:44:33
  • Pycharm 创建 Django admin 用户名和密码的实例

    2021-02-10 01:46:46
  • pyqt5 QScrollArea设置在自定义侧(任何位置)

    2023-05-22 09:33:51
  • 详解Python Qt的窗体开发的基本操作

    2021-03-28 00:58:12
  • 二级域名的解析指向ASP源码

    2007-10-19 19:13:00
  • asp之家 网络编程 m.aspxhome.com