javascript - Backbone 里有一个this看不懂,求指教,多谢啦
PHP中文网
PHP中文网 2017-04-10 16:05:54
[JavaScript讨论组]

下面一段简单的代码里有个this看不懂他什么意思,

var NoteCollectionView = Backbone.View.extend({
    tagName: 'ul',

    initialize: function () {
        this.collection.on('add', this.addOne, this);
        this.render();
    },

    render: function () {
        this.collection.each(this.addOne, this);
        return this;
    },

    addOne: function(note) {
        var noteView = new NoteView({model: note});
        this.$el.append(noteView.render().el);
    }
});
var noteCollection = new NoteCollection([note1, note2, note3]);
var noteCollectionView = new NoteCollectionView({collection: noteCollection});

请问下面那两个加粗的this什么作用,代码的作者说是取得上下文的作用,但是没说具体什么意思?
为什么要放两个this取得上下文啊? 多谢~嘿嘿

 initialize: function () {
        this.collection.on('add', this.addOne, **this**);
        this.render();
    },

    render: function () {
        this.collection.each(this.addOne, **this**);
        return this;
    },
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
怪我咯

传人一个context参数来修改当前上下文,控制this的指向。

object.on(event, handler, [context])

如果你传入context那么当前上下文就是你所传入的context, this也指向它。如果不传入this就指向实例化的对象(根据题主的代码就是collection对象)。

简单的说他的这种做法其实就是让this指向view对象而不是指向collection对象。

阿神

就是上下文啊,你在绑定事件的时候,是得放入一个上下文环境的(Context),否则你触发这个方法的时候,它怎么知道是谁(哪个对象)调用此方法啊,具体请查看Backbone的Events源码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号