访问 Ember.js 对象中的父构造函数
Access parent constructor in Ember.js object
在Ember.js中,如何访问父对象的构造函数?我在四处寻找时确实发现了这个:
this.__ember_meta__.proto.__proto__.__proto__.constructor
这会产生正确的值,但出于显而易见的原因,这是不可接受的。
查看 extend()
方法中的代码,它似乎将父 class 分配给名为 superclass
的 属性,但我没有看到出于某种原因,在我的 classes 中。
查看 definition of the extend
method,您可以看到它构建并返回一个名为 Class
的变量。您应该将您的方法想象成 运行 在 Class
的 实例 上(意味着 this.prototype === Class.prototype
)。
考虑到这一点,您可以看到这个 Class
本身被分配给 Class.prototype.constructor
:
proto = Class.prototype = o_create(this.prototype);
proto.constructor = Class;
因此,您可以使用 this.constructor
访问此 Class
,此外,父 class 的构造函数(如您所述)正在分配给 .superclass
属性的 Class
:
Class.superclass = this;
所以我相信您寻求的答案很简单:
this.constructor.superclass
在Ember.js中,如何访问父对象的构造函数?我在四处寻找时确实发现了这个:
this.__ember_meta__.proto.__proto__.__proto__.constructor
这会产生正确的值,但出于显而易见的原因,这是不可接受的。
查看 extend()
方法中的代码,它似乎将父 class 分配给名为 superclass
的 属性,但我没有看到出于某种原因,在我的 classes 中。
查看 definition of the extend
method,您可以看到它构建并返回一个名为 Class
的变量。您应该将您的方法想象成 运行 在 Class
的 实例 上(意味着 this.prototype === Class.prototype
)。
考虑到这一点,您可以看到这个 Class
本身被分配给 Class.prototype.constructor
:
proto = Class.prototype = o_create(this.prototype);
proto.constructor = Class;
因此,您可以使用 this.constructor
访问此 Class
,此外,父 class 的构造函数(如您所述)正在分配给 .superclass
属性的 Class
:
Class.superclass = this;
所以我相信您寻求的答案很简单:
this.constructor.superclass