发表于: 2017-01-14 03:00:36
1 1083
今天完成的事情:完成了自己写的小程序的部分表单验证;学习了层叠上下文;看了些小程序demo的源码;
明天计划的事情:继续做小程序的服务器通信部分;看锋利的jquery七八章;
遇到的问题:
(function(type) {
pageObject[type] = function(e) {
var key = type + 'Size'
var changedData = {}
changedData[key] =
this.data[key] === 'default' ? 'mini' : 'default'
console.log(this)
this.setData(changedData)
console.log(this)
}
})(types[i])
两个console为什么结果一样,为什么[]换成.就无法实现功能了,不是应该等效的么
收获:了解了starking context的相关知识
从高到低:
1.正index
2.z-index:auto也可把z-index:0看成一样(但从层叠水平上看,实际上在层叠上下问领域有着本质差别)
3.inline/inline-block水平盒子
4.float浮动盒子
5.block块状水平盒子
6.负z-index
7.background/border
跟着tag看到了page编译的过程
var types = ['default', 'primary', 'warn']
var pageObject = {
data: {
defaultSize: 'default',
primarySize: 'default',
warnSize: 'default',
disabled: false,
plain: false,
loading: false
},
setDisabled: function(e) {
this.setData({
disabled: !this.data.disabled
})
},
setPlain: function(e) {
this.setData({
plain: !this.data.plain
})
},
setLoading: function(e) {
this.setData({
loading: !this.data.loading
})
}
}
for (var i = 0; i < types.length; ++i) {
(function(type) {
pageObject[type] = function(e) {
var key = type + 'Size'
var changedData = {}
changedData[key] =
this.data[key]=== 'default' ? 'mini' : 'default'
this.setData(changedData)
}
})(types[i])
}
Page(pageObject)
这个函数,在初始时,自执行了动态添加pageObeject对象的types.length个名为types中每个元素的函数属性,点击时触发不同的函数,创建不同的changedData对象,通过三元来实现changedData[key]中的状态切换,通过setData把这个changedData对象作为键值来改变this也就是pageObject[type]中的对应的属性来达到改变button样式的效果。
三元表达式写两个状态的状态机很方便,自执行函数原来可以这样迭代参数,动态添加好6,同样的效果别人实现的好酷炫。断点调试时,鼠标悬停可以看到每一步各个对象的内部,很方便。
评论