QT自定义对象导入JavaScript脚本使用

1、对象

项目属性要添加

QT       +=  script自定义的对象头文件如下,实现正常就好,记得脚本里要调用的方法一定要定义在public slots:下,要不然调用时提示该对象没有*方法
 
  1 #ifndef CMU_H
  2 #define CMU_H
  3 #include "Communication/Communication.h"
  4 #include "stt_basic_moudle.h"
  5 #include <iostream>
  6 #include <map>
  7 using namespace std;
  8
  9
 10 struct CMU_INFO
 11 {
 12     ///
 13     /// \brief CMU_Table
 14     ///  name
 15     ///
 16     std::map<std::string, CCommunication*> name_commu;
 17     ///
 18     /// \brief anonymous_commu
 19     ///
 20     CCommunication* anonymous_commu;
 21 };
 22
 23 ///
 24 /// \brief CMU_Table
 25 ///
 26 extern std::map<int,CMU_INFO> CMU_Table;
 27
 28 class CMU:public QObject
 29 {
 30     Q_OBJECT
 31
 32 public slots:
 33
 34 #define D_CONNECT (" 35 #########################################################\r\n 36 # 函数说明:\r\n 37 #   打开并连接通讯 目前支持 telnet、console、系统命令行  \r\n 38 #   \r\n 39 # 参数说明:\r\n 40 #   arg1: 连接模式[telnet;console,cmd] ----------必选参数\r\n 41 #   arg2: 是否使用配置登陆,0默认登陆,1不登陆 [0;1]---可选\r\n 42 #   arg3: 匿名通讯会自动关闭,给当前通讯命名[任意名字]   \r\n 43 #   arg4: 无                                             \r\n 44 #   arg5: 无                                             \r\n 45 #   arg6: 无                                             \r\n 46 #  示例:                                                 \r\n 47 #    connect = telnet , 0 , cpe_telnet                   \r\n 48 #                                                        \r\n 49 #########################################################")
 50     bool connect (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
 51
 52
 53 #define D_CLOSE (" 54 #########################################################\r\n 55 # 函数说明:\r\n 56 #   关闭通讯 目前支持 telnet、console、系统命令行  \r\n 57 #   \r\n 58 # 参数说明:\r\n 59 #   arg1: 连接模式[telnet;console,cmd] ----------必选参数\r\n 60 #   arg2: 匿名通讯会自动关闭,关闭通讯命名[任意名字] ---可选\r\n 61 #  示例:                                                 \r\n 62 #    connect = telnet ,  cpe_telnet                   \r\n 63 #                                                        \r\n 64 #########################################################")
 65     bool close (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
 66
 67
 68 #define D_SEND (" 69 #########################################################\r\n 70 # 函数说明:\r\n 71 #   发送命令到通讯 目前支持 telnet、console、系统命令行  \r\n 72 #   \r\n 73 # 参数说明:\r\n 74 #   arg1: 发送的命令 ----------必选参数\r\n 75 #   arg2: 发送目标通讯,无为匿名通讯 通讯命名[任意名字] ---可选\r\n 76 #  示例:                                                 \r\n 77 #    send = dir ,  cpe_telnet                   \r\n 78 #                                                        \r\n 79 #########################################################")
 80     bool send (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
 81
 82
 83 #define D_RECEIVE (" 84 #########################################################\r\n 85 # 函数说明:\r\n 86 #   发送命令到通讯 目前支持 telnet、console、系统命令行  \r\n 87 #   \r\n 88 # 参数说明:\r\n 89 #   arg1: 延时时间 ----------必选参数\r\n 90 #   arg2: 为正则表达式 ----------必选参数\r\n 91 #   arg3: 需要查找的值在正则表达式的第几组内 ----------必选参数\r\n 92 #   arg4: 获取的结果保存到变量,默认RECEIVE ----------可选参数\r\n 93 #   arg5: 发送目标通讯,无为匿名通讯 通讯命名[任意名字] ---可选\r\n 94 #  示例:                                                 \r\n 95 #    receive = 2000,Mac.Address.{2}(.*).,1,para                  \r\n 96 #                                                        \r\n 97 #########################################################")
 98     bool receive(int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
 99
100
101
102 #define D_PING ("103 #########################################################\r\n104 # 函数说明:\r\n105 #   ping  \r\n106 #   \r\n107 # 参数说明:\r\n108 #   arg1: 目标IP ----------必选参数\r\n109 #   arg2: 源IP  [使用默认路由设置] ----------可选参数\r\n110 #   arg3: PING包的次数 默认4 ----------可选参数\r\n111 #   arg4: PING通的连续成功次数,默认1 ----------可选参数\r\n112 #   arg5: PING包的大小 默认64 ---可选\r\n113 #  示例:                                                 \r\n114 #   ping = %ip%,,60,3,64                  \r\n115 #                                                        \r\n116 #########################################################")
117     bool ping (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
118
119 #define D_SLEEP ("120 #########################################################\r\n121 # 函数说明:\r\n122 #   示设置延时的时间  \r\n123 #   \r\n124 # 参数说明:\r\n125 #   arg1: 延时时间,时间单位为毫秒 ----------必选参数\r\n126 #  示例:                                                 \r\n127 #   sleep = 2000                 \r\n128 #                                                        \r\n129 #########################################################")
130     bool sleep (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
131
132 #define D_FIND ("133 #########################################################\r\n134 # 函数说明:\r\n135 #   查找通讯返回信息相应的值  \r\n136 #   \r\n137 # 参数说明:\r\n138 #   arg1: 延时时间,时间单位为毫秒 ----------必选参数\r\n139 #   arg2: 要查找得值 ----------必选参数\r\n140 #   arg3: 发送目标通讯,无为匿名通讯 通讯命名[任意名字] ---可选\r\n141 #  示例:                                                 \r\n142 #   find = 3000,succee                 \r\n143 #                                                        \r\n144 #########################################################")
145     bool find (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
146
147
148
149 #define D_LOOPCHK ("150 #########################################################\r\n151 # 函数说明:\r\n152 #   在一定的时间内下一串指令然后通过正则表达式查找是否有返回所需要的值  \r\n153 #   \r\n154 # 参数说明:\r\n155 #   arg1: 发送的指令 ----------必选参数\r\n156 #   arg2: 总时间        ----------必选参数\r\n157 #   arg3: 正则表达式 ----------必选参数\r\n158 #   arg4: 需要查找的值在正则表达式的第几组内 ----------必选参数\r\n159 #   arg5: 发送完指令后等待时间 默认0----------可选参数\r\n160 #   arg6: 获取的结果保存到变量,默认RECEIVE ----------可选参数\r\n161 #   arg7: 目标通讯,无为匿名通讯 通讯命名[任意名字] ---可选\r\n162 #  示例:                                                 \r\n163 #    loopchk = adsl info,5000,Path.*\D\d.*\D(\d*)\DKbps.*Downstream,1,1                  \r\n164 #                                                        \r\n165 #########################################################")
166     bool loopchk(int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
167
168 #define D_CHECK ("169 #########################################################\r\n170 # 函数说明:\r\n171 #   如果需要比较相同,则使用一个参数,如果需要比较范围,则需要使用两个参数,用来表示上下限  \r\n172 #   \r\n173 # 参数说明:\r\n174 #   arg1: 比较值1   为数值择是上线                    ----------必选参数\r\n175 #   arg2: 比较值2  不为空则是数值范围比较下线 ----------可选参数\r\n176 #   arg3: 目标变量,默认RECEIVE                       ----------可选参数\r\n177 #  示例:                                                 \r\n178 #    check = %up_rate%,%down_rate%                   \r\n179 #                                                        \r\n180 #########################################################")
181     bool check (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
182
183
184 #define D_SET ("185 #########################################################\r\n186 # 函数说明:\r\n187 #   用来将receive指令通过正则表达匹配到的值保存一个变量里  \r\n188 #   如果有四个参数:set = 新变量名,变量名,分隔符类型(数字),分隔数量  \r\n189 #   分隔符类型有:0->无,1->:,2->-,3->.,4->%3A,5->空格,6->空格  \r\n190 #   \r\n191 # 参数说明:\r\n192 #   arg1: 目标变量名                                                 ----------必选参数\r\n193 #   arg2: 源数据                                                        ----------可选参数\r\n194 #   arg3: 分隔符类型 0->无,1->:,2->-,3->.,4->%3A,5->空格,6->空格(除了空格,数据会变成十六进制)----------可选参数\r\n195 #   arg4: 分隔数量                                                     ----------可选参数\r\n196 #  示例:                                                 \r\n197 #    set = newmac,%mac%,1,2                 \r\n198 #                                                        \r\n199 #########################################################")
200     bool set (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
201
202 #define D_STRINGADD ("203 #########################################################\r\n204 # 函数说明:\r\n205 #   根据具体截取数值确定累积参数增加  \r\n206 #   \r\n207 # 参数说明:\r\n208 #   arg1: 目的截取后的数值字符串                             ----------必选参数\r\n209 #   arg2: stringAdd指令所用到参数的个数(包含本身) ----------必选参数\r\n210 #   arg3: 前缀字符串                                                 ----------必选参数\r\n211 #   arg4: 括号内的第一个参数表示被截取的字符串,第二个参数表示起始位,第三个参数表示位数长度 ----------必选参数\r\n212 #   arg..:   同[arg4] \r\n213 #  示例:                                                 \r\n214 #    stringAdd = %StrNew%,4,Str(WLAN_),Sub(&mac&;9;4)                 \r\n215 #                                                        \r\n216 #########################################################")
217     bool stringAdd (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
218
219
220 #define D_COMPARE ("221 #########################################################\r\n222 # 函数说明:\r\n223 #   表示用于目的字符串的值与源字符串的值进行对比  \r\n224 #   \r\n225 # 参数说明:\r\n226 #   arg1: 目的字符串的值                             ----------必选参数\r\n227 #   arg2: 是源字符串的值                             ----------必选参数\r\n228 #   arg3: 第一个参数截取子字符串的索引号  ----------可选参数\r\n229 #   arg4: 截取子字符串的长度                      ----------可选参数\r\n230 #  示例:                                                 \r\n231 #    compare = %StrNew%,%ssid%,2,3                 \r\n232 #                                                        \r\n233 #########################################################")
234     bool compare (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
235
236
237 #define D_ADD ("238 #########################################################\r\n239 # 函数说明:\r\n240 #   将源字符串的内容加/减一个数,然后按指定格式保存到目的字符串的变 \r\n241 #   量里  \r\n242 #   \r\n243 # 参数说明:\r\n244 #   arg1: 目的字符串的值                                  ----------必选参数\r\n245 #   arg2: 是源字符串的值                                  ----------必选参数\r\n246 #   arg3: 被加/减数[整数]:表示要减或加的参数   ----------必选参数\r\n247 #   arg4: 目的字符串格式[整数]:参数表示指定的间隔符(0:无,1: \":\",2: \"-\",3: \".\",4: \"%3A\",5:\" \")----------必选参数\r\n\
248 #   arg5: 目的串截取段[整数]:间隔符之间的字符数   ----------必选参数\r\n249 #   arg6: 加/减[0/1]:1为递增,0为递减。                  ----------必选参数\r\n250 #  示例:                                                 \r\n251 #    add = %mac1%,%mac%,8,0,2,1                 \r\n252 #                                                        \r\n253 #########################################################")
254     bool add (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
255
256
257 #define D_LOOPFIND ("258 #########################################################\r\n259 # 函数说明:\r\n260 #   在一定的时间内下一串指令然后通过正则表达式查找是否有返回所需要的值  \r\n261 #   \r\n262 # 参数说明:\r\n263 #   arg1: 发送的指令 ----------必选参数\r\n264 #   arg2: 总时间        ----------必选参数\r\n265 #   arg3: 单步循环时间 ----------必选参数\r\n266 #   arg4: 需要查找的值 ----------必选参数\r\n267 #   arg5: 目标通讯,无为匿名通讯 通讯命名[任意名字] ---可选\r\n268 #  示例:                                                 \r\n269 #    loopfind = NULL, 40000,10000,rstBtn_pressed                  \r\n270 #                                                        \r\n271 #########################################################")
272     bool loopfind (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
273
274
275
276 #define D_CHANGE ("277 #########################################################\r\n278 # 函数说明:\r\n279 #  从[源字符串名称]获取的数据,用[正则式]匹配出来的子字符串,根据[改变的方式]对子字符串进行格式上的转换并保存到[目标字符名称]  \r\n280 #   \r\n281 # 参数说明:\r\n282 #   arg1: 目标字符串名 ----------必选参数\r\n283 #   arg2: 源字符名称        ----------必选参数\r\n284 #   arg3: 正则式 ----------必选参数\r\n285 #   arg4: 表达式所在组 ----------必选参数\r\n286 #   arg5: 改变的方式 0:无改变;1:变为小写,2,变为大写---必选参数\r\n287 #  示例:                                                 \r\n288 #    loopfind = NULL, 40000,10000,rstBtn_pressed                  \r\n289 #                                                        \r\n290 #########################################################")
291     bool change (int test_id,QString arg1,QString arg2,QString arg3,QString arg4, QString arg5,QString arg6,QString arg7,QString arg8,QString arg9);
292
293 };
294 #endif // CMU_H
2、注册对象到JavaScript解释器

注意要是在不同的函数调用需要使用new 创建注册的对象以免函数执行完毕被销毁
    CMU * cmu = new CMU();
    QScriptValue qcmu = eng->newQObject(cmu);
    eng->globalObject().setProperty(this->get_moudle_name().c_str(), qcmu);


  1 /******************************************************************************************************
  2 * Copyright (C) 2014, All right reserved.
  3
  4 * file
  5 * version  1.0
  6 * author   NingJian ([email protected])
  7 * brief
  8
  9 * detail
 10
 11 * TODO
 12 * history  2014-9-17 created by NingJian
 13 *
 14 * note
 15 ******************************************************************************************************/
 16
 17 #include "stt_basic_moudle.h"
 18 #include "cmu.h"
 19
 20
 21 std::map<int,TEST_INFO> *STT_Basic_Moudle::STT_G_Test_Info;
 22
 23 std::map<std::string,TEST_FUN_INFO> *STT_Basic_Moudle::STT_G_Test_Fun_Info;
 24
 25 RUN_FUN STT_Basic_Moudle::STT_G_Test_Run_Fun;
 26
 27 std::map<std::string,std::string>     *STT_Basic_Moudle::STT_G_Moudles_Config;
 28
 29
 30 STT_Basic_Moudle::STT_Basic_Moudle()
 31 {
 32
 33 }
 34
 35
 36 bool STT_Basic_Moudle::init(std::map<int, TEST_INFO> &test_info, std::map<string, TEST_FUN_INFO> &test_fun_info, std::map<string, string> &moudles_config, RUN_FUN run_fun) const
 37 {
 38
 39     STT_Basic_Moudle::STT_G_Test_Info = &test_info;
 40     STT_Basic_Moudle::STT_G_Test_Fun_Info = &test_fun_info;
 41     STT_Basic_Moudle::STT_G_Test_Run_Fun = run_fun;
 42     STT_Basic_Moudle::STT_G_Moudles_Config = &moudles_config;
 43     return true;
 44 }
 45
 46 bool STT_Basic_Moudle::release() const
 47 {
 48     return true;
 49 }
 50
 51 bool STT_Basic_Moudle::initiation(int test_id) const
 52 {
 53     return true;
 54 }
 55
 56 bool STT_Basic_Moudle::finish(int test_id) const
 57 {
 58     std::string error_str;
 59     CMU_INFO  ci = CMU_Table[test_id];
 60     if( ci.anonymous_commu != NULL )
 61     {
 62         ci.anonymous_commu->fnClose(error_str);
 63     }
 64     std::map<std::string, CCommunication*>::iterator it = ci.name_commu.begin();
 65     while(it != ci.name_commu.end())
 66     {
 67         it->second->fnClose(error_str);
 68         it++;
 69     }
 70     ci.name_commu.clear();
 71     return true;
 72 }
 73
 74
 75
 76
 77 std::string STT_Basic_Moudle::get_moudle_version() const
 78 {
 79     return std::string("Version: V1.0.0  \r\n" ) + STT_BUILD_TIME ;
 80 }
 81
 82 std::string STT_Basic_Moudle::get_moudle_describe() const
 83 {
 84     return "基本功能模块";
 85 }
 86
 87 void STT_Basic_Moudle::reg_ui_fun(REG_UI_FUN reg_ui_f) const
 88 {
 89
 90 }
 91
 92 void STT_Basic_Moudle::reg_fun(int test_id,QScriptEngine *eng) const
 93 {
 94     CMU * cmu = new CMU();
 95     QScriptValue qcmu = eng->newQObject(cmu);
 96     eng->globalObject().setProperty(this->get_moudle_name().c_str(), qcmu);
 97
 98
 99     add_fun(this->get_moudle_name().c_str(),   "connect",         D_CONNECT      );
100     add_fun(this->get_moudle_name().c_str(),  "close",             D_CLOSE       );
101     add_fun( this->get_moudle_name().c_str(),   "send",              D_SEND      );
102     add_fun(this->get_moudle_name().c_str(),   "receive",          D_RECEIVE     );
103     add_fun(this->get_moudle_name().c_str(),  "ping",               D_PING       );
104     add_fun(this->get_moudle_name().c_str(),   "sleep",             D_SLEEP      );
105     add_fun( this->get_moudle_name().c_str(),   "find",                D_FIND    );
106     add_fun(this->get_moudle_name().c_str(),   "loopchk",         D_LOOPCHK      );
107     add_fun( this->get_moudle_name().c_str(),   "check",            D_CHECK      );
108     add_fun( this->get_moudle_name().c_str(),  "set",                 D_SET      );
109     add_fun(this->get_moudle_name().c_str(),   "stringAdd",      D_STRINGADD     );
110     add_fun( this->get_moudle_name().c_str(),   "compare",       D_COMPARE       );
111     add_fun( this->get_moudle_name().c_str(),   "add",                D_ADD      );
112     add_fun(this->get_moudle_name().c_str(),   "loopfind",         D_LOOPFIND    );
113     add_fun( this->get_moudle_name().c_str(),   "change",          D_CHANGE      );
114 }
115
116
117
118
119 string STT_Basic_Moudle::get_moudle_name() const
120 {
121     return "STT_Basic_Moudle";
122 }
123
124
125
126
127
128 string get_stt_variable(int test_id, string key)
129 {
130     return (*STT_Basic_Moudle::STT_G_Test_Info)[test_id].variable_map[key];
131 }
132
133
134 void set_stt_variable(int test_id, string key, string value)
135 {
136     (*STT_Basic_Moudle::STT_G_Test_Info)[test_id].variable_map.insert(std::pair<std::string,std::string>(key,value));
137 }
138
139
140
141
142
143 void add_fun(const char *moudle_name, const char *fun_name, const char *fun_describe)
144 {
145
146     if((*STT_Basic_Moudle::STT_G_Test_Fun_Info).find(fun_name)==(*STT_Basic_Moudle::STT_G_Test_Fun_Info).end())
147     {
148         TEST_FUN_INFO tfi={moudle_name,fun_name,fun_describe};
149         (*STT_Basic_Moudle::STT_G_Test_Fun_Info).insert(std::pair<std::string,TEST_FUN_INFO>(fun_name,tfi));
150     }
151 }

3、使用我的注册时在插件里实现的,调用在主程序里,这样可以n个插件向同一个javascript解释器里注册不同的对象执行完一次可以判断是否有异常,打印异常信息等
 1 ///
 2 /// \brief G_STT_Interpreter [STT解释器]
 3 ///
 4 std::map<int,QScriptEngine *> G_STT_Interpreter;
 5
 6
 7 /* ############################################################################################################# */
 8
 9
10 bool G_STT_Run_Fun(QString fun_name, int test_id, QString v1, QString v2, QString v3, QString v4, QString v5, QString v6, QString v7, QString v8, QString v9)
11 {
12     bool result = false;
13     TEST_FUN_INFO tfi = G_Test_Fun_Info[fun_name.toStdString()];
14
15     if(tfi.fun_name == fun_name.toStdString())
16     {
17         QString script=QString("%1.%2").arg(tfi.modle_name.c_str(),fun_name);
18
19         QScriptValueList args;
20         QScriptEngine * eng =  G_STT_Interpreter[test_id];
21         args << test_id << v1<<v2<<v3<< v4<<v5<<v6<< v7<<v8<<v9;
22         QScriptValue cpp_fun = eng->evaluate(script);
23         qDebug()<<cpp_fun.toString();
24         QScriptValue value =  cpp_fun.call(QScriptValue(), args);
25
26
27         if (G_STT_Interpreter[test_id]->hasUncaughtException()){
28             emit STT_Global::mw->signal_add_Log(test_id, G_STT_Interpreter[test_id]->uncaughtException().toString());
29             emit STT_Global::mw->signal_add_Log(test_id,G_STT_Interpreter[test_id]->uncaughtExceptionBacktrace().join("/n"));
30             qDebug()<<G_STT_Interpreter[test_id]->uncaughtException().toString();
31             qDebug()<<G_STT_Interpreter[test_id]->uncaughtExceptionBacktrace().join("/n");
32             return false;
33         }else{
34             result = value.toBool();
35         }
36
37     }
38
39     return result;
40 }

				
时间: 2024-09-29 06:55:06

QT自定义对象导入JavaScript脚本使用的相关文章

javascript自定义对象

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascr

JS中的函数,Array对象,for-in语句,with语句,自定义对象,Prototype

一)函数 A)JS中的函数的定义格式: function add(a,b) { var sum = a+b; document.write("两个数的和是:" + sum); //return sum; } 上面只是一个例子 ,那么当我们再定义一个同名的函数会怎么样呢? function add(a,b,c) { var sum = a+b+c; document.write("三个数的和是:" + sum); } 然后调用函数: add(50,30,10);   

JavaScript中的内部对象、宿主对象、自定义对象

链接:https://www.nowcoder.com/questionTerminal/63bc9543a21b43d59c45684bffb7c014来源:牛客网 JS中,可以将对象分为"内部对象"."宿主对象"和"自定义对象"三种. 1.内部对象 js中的内部对象包括Array.Boolean.Date.Function.Global.Math.Number.Object.RegExp.String.以及各种错误类对象,包括Error.Ev

JavaScript实现自定义对象的自定义事件

前言: 大家都知道,在使用JavaScript可以很方便的使用addEventListener函数给DOM对象快速绑定一个或多个事件侦听器. 我们又如何在JavaScript的自定义对象中使用此方法并触发事件呢?这就是本章节的核心内容了. 目的: 现在有一个需求,要求"a对象"能够让"b对象"做一系列动作. 分析后我们得知.首先,"b对象"有一个固定名称作为入口让a对象调用,并且这个入口可以自动检索所有符合这个动作要求的函数并依次触发. 实现:

JavaScript学习-自定义对象/

JavaScript学习 [自定义对象] 1.基本概念 ① 对象概念: 对象是包含一系列无序属性和方法的集合: ② 对象中的数据,是以键值对形式存在的,以键取值: ③ 属性:描述对象特征的一系列变量.[对象中的变量]: ④ 方法:描述对象行为的一系列方法.[对象中的函数]: 2.对象的声明: ① 字面量声明: var ovj={ key1:value1, //属性 key2:value2 func:function(){} //方法 } ② 对象中的键,可以是任何数据类型.但,一般用作普通变量名

JavaScript 类的定义和引用 JavaScript高级培训 自定义对象

在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascript中,已经存在一些标准的类,例如Date.Array.RegExp.String.Math.Number等等,这为我们编程提供了许多方

JavaScript基础学习之-自定义对象(2)

自定义对象 一.定义类或对象1.工厂方式创建对象car 1 var oCar = new Object; 2 oCar.color = "red"; 3 oCar.doors = 4; 4 oCar.mpg = 23; 5 oCar.showColor = function(){ 6 alert(this.corlor); 7 }; 8 9 创建多个car 10 function createCar(color, doors, mpg) { 11 var tempcar = new O

JavaScript中的内置对象(数组、Boolean、Number、字符串)和自定义对象

JS中常用的内置对象有:数组.Boolean类.Number类.字符串.下面分别介绍各自的常用方法 JS中的数组 1.数组的声明 ①字面量声明 直接使用[]声明数组: var arr=[1,2,"3",true,null,undefined]; 在JS中同一数组可以存放各种数据类型. ②使用new关键字声明:var arr = new Array(); 参数可以有三种形式: >>> 不传参数,表示创建一个长度为0的空数组: >>> 传入一个数值,表示

jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)

1.表单验证插件--validate   该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下: $(form).validate({options}) 其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规则和异常信息显示的位置都在该对象中进行设置.     2.表单插件--form 通过表单form插件,调用ajaxForm()方法,实现ajax方式向服务器提交表单数据,并通过方法中的option