gpt4 book ai didi

javascript - Ember.js 在哪里调用 this._super()

转载 作者:可可西里 更新时间:2023-11-01 01:18:34 26 4
gpt4 key购买 nike

我一直在浏览 Ember 文档,发现在覆盖 init 时调用 _super 方法的位置不一致。

这是最常见的,也是我到目前为止一直在使用的

var Foo = Em.Object.extend({
init: function(){
this._super();
// ... my stuff ...
}
});

昨晚我正在通读 this write up并看到一个这样做的例子

var Bar = Em.Object.extend({
init: function(){
// ... my stuff ...
return this._super();
}
});

它实际上是代码片段中的一个Ember.ContainerView

谁能解释一下?我的代码强制症出现了问题,在我知道之前我无法继续前进。

最佳答案

在链接的文档中

 init: function() {
var childViews = this.get('childViews');
var descriptionView = App.DescriptionView.create();
childViews.pushObject(descriptionView);
this.addButton();
return this._super();
},

_super() 在 descriptionView 创建并推送到 childViews 数组后被调用。

那是因为父类(super class) init 实现将获取 childViews 数组并用它做一些事情。如果您在将 descriptionView 添加到数组之前调用了 _super,则无论 init 做什么,它都不会被处理....

我是在推断,但这就是它在 Sproutcore 中的工作方式,Ember 就是从它派生出来的,所以我认为它可能是一样的。

关于javascript - Ember.js 在哪里调用 this._super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com