项目中集成了JSPatch,用到过几次,现在就把OC代码转JS代码的一些注意点写出来,也是为了让自己以后用到的时候不至于再去看官方文档了
首先是语法,OC是用 [ ]来调用方法的,JS是通过()来调用的,写起来感觉跟swift差不多,多写几个体会一下就明白了
1、方法名或者属性带有 “ _ ” 的,转为JS后要变成双下划线
// OC
@property (nonatomic,copy) NSString *chap_id;
// JS
var chapID = self.chap_id // get
self.setChap__id = "1234" // set 注意了设值时属性的首字母要大写,并且在前面加上‘set’
// 同样的方法名也是一样的,只要单下划线变成双下划线就可以
// OC
[self.icon sd_setImageWithURL:[NSURL URLWithString:@"xxxxxxx"]];
// JS
self.icon().sd__setImageWithURL(NSURL.URLWithString("xxxxxxx"));
2、成员变量
// 一般来讲成员变量的命名规则是以 ‘_’ 开头的
// OC 成员变量
{
int dataCount;
NSMutableArray *_dataArr;
}
// JS
// get
var data = self.valueForKey("_dataArr")
var count1 = self.valueForKey("dataCount")
// 取数组里对应下标的数据
var model = data.objectAtIndex(count1);
// 成员变量用完后记得要再把值重新设置回去
// set
self.setValue_forKey(data, "_dataArr")
self.setValue_forKey(count1, "dataCount")
3、字典
// 那userDefaults来说吧
// OC
[[NSUserDefaults standardUserDefaults]setObject:@"" forKey:@"user_id"];
// JS
NSUserDefaults.standardUserDefaults().setObject_forKey("", "user_id")
这是用过几次之后总结的可以写的,其他的像block,GCD这样的直接照着官方文档搬就可以了我在这里不再赘述,需要提醒的是,不要依赖JSPatch官网的代码转换工具和语法检查,有时候确实好用,但是有时候错误会很难找,比方说括号,尤其是嵌套层级很深的,转换出来就会有问题,遇到这种的就只能靠眼力去找了。
另:此文章会一直更新