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]