文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
this & self & scope
Vdt模板编译的结果,会添加如下代码
function(obj) {
var self = this.data, scope = obj;
....
}
vdt.render()
方法这样调用模板函数
var vdt = {
render: function() {
template.call(vdt, data);
...
}
}
所以
this
模板中this
指向vdt
实例self
模板中self
指向渲染到模板的数据this.data
scope
模板中scope
指向传入模板的数据data
一般情况下,scope === self
,但是当模板存在继承时就不相等了,例如:
// @file ./layout.vdt
console.log(self, this)
<div>
<p>scope.name: {scope.name}</p>
<p>self.name: {self.name}</p>
<p>this.data.name: {this.data.name}</p>
</div>
var layout = require('./layout.vdt');
<t:layout name="Vdt" />
var vdt = Vdt(template);
vdt.render({
name: 'Virtual-Dom'
})
上例中,self & this
保持不变,但是scope
等于继承layout
时传入的数据{name: 'Vdt'}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论