じ☆ve冰风 发表于 2024-2-16 07:22:32

MV默认脚本基础上的元编程,待续,beta

约定MV对象的所处的类按js惯例用构造函数:
JAVASCRIPT 代码
this.constructor

那么一个类的超类用:

参考2楼tentaroxd的做法,楼主做法已折叠





祖先:
JAVASCRIPT 代码
Object.prototype.ancestors = function(){
if(this.prototype.__proto__ === null || this.prototype.__proto__.constructor == this)return;
if(this._ancestors == null)this._ancestors = .concat(this.prototype.__proto__.constructor.ancestors());
returnthis._ancestors
}


instance_eval
普通情况下,用bind或者call,apply之类的就行了,比如
JAVASCRIPT 代码
Object.prototype.instance_eval = function(f){return f.bind(this)()}

但是对于下面的情形行不通,或者说词法范围不一样:
当函数是一个es6的lambda时,this将绑定到外部的this,因此下面会有不一样的行为:
JAVASCRIPT 代码
(3).instance_eval(function(){returnthis * 2})//6

(3).instance_eval(() => this * 2)//NaN, 根据上下文可能有所不同


             本帖来自P1论坛作者宝箱怪,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=385640若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: MV默认脚本基础上的元编程,待续,beta