猿问

js中为什么要在声明var变量中创建函数?

 var menu = {
   
    // 当前状态
    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() {}这样的写法。逗号是代表这个写法属于数组是吗?
这个判断是否显示隐藏的代码怎么去执行它?

慕仙森
浏览 558回答 4
4回答

茅侃侃

先了解什么是对象        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方法        },       

Cats萌萌

JS中var变量其实是定义的一个对象,对象包罗万象,可以有很复杂的结构。对象通过一对大括号{}创建,其中可以有属性,方法(即函数的形式)。特有的方法(或函数)写在对象的声明中,是因为这样写代码更逻辑清晰,而不与外界混淆产生干扰,同时维护时也非常方便查找和改进。

桃花长相依

1、一个变量等同于一个对象,他既有属性又有方法,可以是逻辑更清晰2、属于数组,currentState 、 initialize 都属于menu 的属性,:后的是属性的值3、更改 menu.currentState 属性的值 然后调用 menu.transition 可执行

开心每一天1111

”{}“ 表示一个对象,”{}“以”,“分隔该对象的属性或函数。如你列出的代码的含义是:    创建一个名为menu的对象,同时menu具有currentState属性、函数initialize 和 函数transition等价于:1234var menu = {};menu.currentState = "hide";menu.initialize  = function(){...};menu.transition  = function(){...};你说的,分隔表示数组,那是在”[]“的情况,如:1var array = [1,2,3];
随时随地看视频慕课网APP

相关分类

Java
我要回答