如何在Realm类中声明无返回值的自定义函数?
在Realm对象中定义无返回值的方法
你完全不用纠结get运算符——那只是用来定义计算属性的,必须有返回值,而你要的是一个普通的方法,直接像写常规JavaScript类方法那样声明就可以了!
正确的写法示例
直接去掉get关键字,把它写成一个普通的类方法:
class Person extends Realm.Object { // 这就是一个普通的无返回值方法,完全符合你的需求 doTheThing(thatThing) { ThingsToDo.DoThis(thatThing); } }
为什么之前用get不行?
get是用来定义访问器属性的,Realm对这类属性的处理逻辑是只关注它的返回值(用来作为计算后的属性值),所以你写在get函数里的其他代码可能不会被完整执行(尤其是在Realm集合中遍历对象时),而且get语法本身就要求必须有返回值,返回null确实不符合规范。
给所有Realm对象添加通用方法
如果需要给所有继承自Realm.Object的类都添加这个方法,可以通过修改原型来实现:
// 给所有Realm对象添加通用的doTheThing方法 Realm.Object.prototype.doTheThing = function(thatThing) { ThingsToDo.DoThis(thatThing); };
这样任何Realm对象实例都能调用doTheThing()方法了,不过要注意这种全局修改原型的方式可能带来潜在的冲突,建议根据实际场景谨慎使用。
验证使用
实例化对象后直接调用方法即可:
const person = new Person(); person.doTheThing('需要处理的内容');
Realm不会干涉普通方法的执行逻辑,这类方法和常规JavaScript类方法的行为完全一致。
内容的提问来源于stack exchange,提问作者arshbot
相关产品推荐
相关产品推荐

