我怎么能在像jQuery这样的函数里面做变量对象呢?

时间:2017-10-26 10:33:56

标签: javascript jquery function object

我有这个功能来显示通知

var notification_box = {
    notification: function (msg) {
        $('#notification_box').animate({
            top: "100"
        }).text(msg)
    }
}

我用

声明了它
notification_box.notification("wwaaaa");

如何用这个声明函数?

notification_box.notification({
    msg: "wwaaaa"
});

2 个答案:

答案 0 :(得分:2)

使用点表示法或括号表示法。

您正在将对象传递到notification object中的函数notification_box。函数msg中指的是您传递的对象。该函数的属性为msg,因此msg.msg(或msg['msg'])是访问变量的方式。

var notification_box = {
  notification: function(msg) {
    $('#notification_box').animate({
      top: "100"
    }).text(msg.msg) //look at the dot notation here, it refers to the object
  }
}


notification_box.notification({
  msg: "wwaaaa"
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="notification_box"></div>

使用definePropertygetter

setter更酷

var notification_box = {"notify_message" : ""};

Object.defineProperty(notification_box, "notification", {
 get : function(){return this.notify_message;},
 set : function(value){ 
              $('#notification_box').animate({top: "100"}).text(value);
              this.notify_message = value;
              }
});

//set
notification_box.notification = "waaaaaaa";
//get
console.log(notification_box.notification);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="notification_box"></div>

答案 1 :(得分:1)

使用点符号

可以访问将json传递给函数
  

object.attribute

在您的情况下使用

msg.msg  #First msg is javascript object and second msg is attribute