【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题
2016-08-15 17:15
295 查看
对于C++来说,存在函数重载,例如:
这两个函数的函数名是一样的,但是参数表不同。最终在编译器编译后的函数签名不一样。
但是在JavaScript中并没有这种机制。怎么破?存在两种情况:
第一种、JS需要调用重载的C++函数接口
我们就以上面的函数为例,来看看在cxx-generator的自动生成代码中,函数重载是如何处理的。打开jsb_cocos2dx_auto.cpp,找到如下代码:
只是通过argc参数简单判断了一下参数个数,然后就执行对应的分支代码就好了。但是如果遇到参数个数相同,而类型不同的情况呢?尚不得而知。
第二种、不需要调用C++函数接口,直接在JS层代码中模拟一下函数重载。这个就要利用JS语言的一些特性了。我们直接看Cocos2d-html5中的对应代码。哦,no,因为html5里面关于CCNode::setScale函数写了一点杂技代码。所以我们改成看setPosition函数吧。也是一样的。
可以看到,该代码使用了JS的arguments来判断参数个数,然后执行对应的分支代码。
好了,重载就说道这里,下篇继续~
来自:http://blog.csdn.net/kaitiren/article/details/22163345
但是在JavaScript中并没有这种机制。怎么破?存在两种情况:
第一种、JS需要调用重载的C++函数接口
我们就以上面的函数为例,来看看在cxx-generator的自动生成代码中,函数重载是如何处理的。打开jsb_cocos2dx_auto.cpp,找到如下代码:
第二种、不需要调用C++函数接口,直接在JS层代码中模拟一下函数重载。这个就要利用JS语言的一些特性了。我们直接看Cocos2d-html5中的对应代码。哦,no,因为html5里面关于CCNode::setScale函数写了一点杂技代码。所以我们改成看setPosition函数吧。也是一样的。
好了,重载就说道这里,下篇继续~
来自:http://blog.csdn.net/kaitiren/article/details/22163345
相关文章推荐
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题 推荐
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
- 【cocos2d-x从c++到js】10:JS与C++的交互2——JS与C++的“函数重载”问题
- 【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题
- 【cocos2d-x从c++到js】JS与C++的交互2——JS与C++的“函数重载”问题
- c++与js脚本交互,C++调用JS函数/JS调用C++函数
- cocos2d-x从c++到js】JS与C++的交互1——JS代码调用C++代码
- C++和JS的交互1 - 在C++中调用JS函数 .
- C++中形参与const形参的函数重载问题。
- [置顶] 在js中如何实现方法重载?以及函数的参数问题
- 【cocos2d-x从c++到js】09:JS与C++的交互1——JS代码调用C++代码
- 【cocos2d-x从c++到js】JS与C++的交互3——C++和JS类型转换
- Cocos2d-x的SpiderMonkey的JavaScript与C++的交互(一) - 函数操作
- 【cocos2d-x从c++到js】JS与C++的交互1——JS代码调用C++代码
- Cocos2d-x的SprideMonkey的JavaScript与C++的交互(四) - 灰常好用的一个函数eval
- 【cocos2d-x从c++到js】JS与C++的交互3——C++和JS类型转换
- js中的函数参数个数问题(重载问题)
- c++与js脚本交互,C++调用JS函数/JS调用C++函数
- 【cocos2d-x从c++到js】注册函数
- Cocos2d-x的SprideMonkey的JavaScript与C++的交互(一) - 函数操作