js中为什么要在声明var变量中创建函数?
// 当前状态
currentState: 'hide',
// 绑定事件
initialize: function() {
var self = this;
self.on("hover", self.transition);
},
// 状态转换
transition: function(event){
switch(this.currentState) {
case "hide":
this.currentState = 'show';
doSomething();
break;
case "show":
this.currentState = 'hide';
doSomething();
break;
default:
console.log('Invalid State!');
break;
}
}
};
有三个问题:
它在变量中写这个有什么好处呢?
currentState: 'hide',initialize: function() {}这样的写法。逗号是代表这个写法属于数组是吗?
这个判断是否显示隐藏的代码怎么去执行它? 展开
先了解什么是对象
var menu = {}; // {}表示一个对象,menu就是一个对象
2. JS {}对象的数据格式
它的数据格式是json,即键值对,使用,分隔,如{a:"vaule1", b : function(){}}
因此你理解成数组是不对的
3. 怎么执行,根据你现在的代码无法判断
推测,你在某个时间点,需要绑定事件,如页面加载时,你执行menu.initialize();方法
根据下面方法
// 绑定事件
initialize: function() {
var self = this;
self.on("hover", self.transition); // 把hover事件设置成 transition()
// 个人觉得 menu对象还少了个on方法
},
假设
111111 我想让它在hover时执行我上方贴的代码 应该怎样写来调用呢?
帮我解决最后一个问题 多谢!
修改initialize方法
initialize: function() {
var self = this;
// self.on("hover", self.transition);
$("#demo").on("hover", self.transition);
},
把事件绑到$("#demo").对象上
在页面加载时初始化,即执行
menu.initialize();
这是JSON数组的写法,
常用在封装控件的里面,
这样写的好处是方便继承和调用
json一般格式:
var json =
{
key1:value1,
key2:value2
.
.
.
}
因为js是弱类型,所以value可以是字符串、function都可以。
你这个代码大概意思是鼠标移上去就显示相关信息,移出去就隐藏信息,传入状态错误就在浏览器中显示错误信息Invalid State
前两个都看懂了,第三个能帮忙写下如何调用它吗?谢谢!
第三个是自动调的,我不是说了你的代码的目的了吗
menu.initialize()这样调用就执行了
”{}“ 表示一个对象,”{}“以”,“分隔该对象的属性或函数。
如你列出的代码的含义是:
创建一个名为menu的对象,同时menu具有currentState属性、函数initialize 和 函数transition
等价于:
var menu = {};
menu.currentState = "hide";
menu.initialize = function(){...};
menu.transition = function(){...};
你说的,分隔表示数组,那是在”[]“的情况,如:
var array = [1,2,3];
2、属于数组,currentState 、 initialize 都属于menu 的属性,:后的是属性的值
3、更改 menu.currentState 属性的值 然后调用 menu.transition 可执行
前两个都看懂了,第三个能帮忙写下吗? 谢谢!