久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

學(xué)習(xí)SpiderMonkey60的心得筆記(五)調(diào)用JS中的函數(shù)

 Dark_f 2022-02-10
如果JavaScript的代碼如下:
          function add(a, b) {
              return (a + b);
         };
         var a = 12;
         var b = 25;
         var num = add(a, b);
則說明在JS中定義了一個(gè)函數(shù)add,,然后設(shè)定了a,、b兩個(gè)變量的值,,作為參數(shù)傳給add,,并將結(jié)果給變量num。
這里的函數(shù)add是在JS中定義的,,如果在C/C++程序中想要調(diào)用這個(gè)方法,,該怎么用呢?
在SpiderMonkey中有個(gè)JSAPI
         bool
         JS_CallFunctionName(JSContext* cx, JS::HandleObject obj, const char* name,
                                        const JS::HandleValueArray& args, JS::MutableHandleValue rval);
這個(gè)JSAPI就是根據(jù)JS中的函數(shù)名稱來找到并調(diào)用該函數(shù),。其中的參數(shù):cx,、obj都是熟悉的了;name是函數(shù)名稱,,針對(duì)上面的JS代碼就是add,;而args就是函數(shù)的參數(shù)數(shù)組,也就是上面JS代碼中a和b,;調(diào)用函數(shù)的返回值,,也就是add的計(jì)算結(jié)果就放在aval這個(gè)JS::Value里。
現(xiàn)在,,我們就可以代碼實(shí)現(xiàn)在C/C++中來調(diào)用在JS中定義的函數(shù)了,,代碼如下:
        //先定義一個(gè)包含2個(gè)元素的數(shù)組ele,,是根化了的數(shù)組
        JS::AutoValueArray<2> ele(cx);
        //給數(shù)組的元素賦值,我們現(xiàn)在賦值18和24
        ele[0].setInt32(18);
        ele[1].setInt32(24);
        //定義一個(gè)根化的變量rval,,用來接收返回值
        JS::RootedValue rval(cx);
        //定義bool變量ok,,調(diào)用JS中的函數(shù)add,并將返回值賦給rval
        bool ok = JS_CallFunctionName(cx, obj, "add", ele, &rval);
        //根據(jù)ok的結(jié)果,,判斷函數(shù)調(diào)用是否成功,。成功就輸出結(jié)果;不成功就輸出無法調(diào)用,,并返回false
        if (ok) {
                printf("The JS function 'add' is called, the reult: %d\n", rval.toInt32());
        }
        else {
               printf("JS function isn't called");
               return false;
        }
        //下面的代碼,,前面的筆記中已經(jīng)解釋過了,意思是把JS中的變量num結(jié)果顯示出來,。
       ok = JS_GetProperty(cx, obj, "num", &rval);
        if (ok) {
                 printf("The num is %d\n", rval.toInt32());
        }
        else {
                printf("The num isn't found!");
                return false;
        }
運(yùn)行程序后,,結(jié)果顯示如下:
 The JS function 'add' is called, the reult: 42 //這是c++調(diào)用add計(jì)算18+24的結(jié)果
 The num is 37 //這是JS中12+25的結(jié)果,是由JS自動(dòng)執(zhí)行的結(jié)果

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多