访问 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

观察:http://jsfiddle.net/99gvpqzx/1/