调用方法不使用当前分配的对象数据到公共函数

时间:2016-07-25 08:39:43

标签: javascript

其实我正在研究申请,绑定和通话。为了测试它们,我简单地创建了一个简单的函数,如下所示。

var data = [{
  "option": "com_easysocial",
  "userId": localStorage.getItem("ckuser"),
  "layout": "getConversations",
  "view": "conversations",
  "format": "json",
  "limit": 2
}];

var Data = data['layout'];

function ajaxCall(arrayOfdata){
    var score = arrayOfdata;
    return score;
    this.Data = score['layout'];
}
/***global variable & functions end***/

var contacts = {
   data : [{
      "option": "com_easysocial",
      "userId": localStorage.getItem("ckuser"),
      "layout": "getContacts",
      "view": "conversations",
      "format": "json",
      "limit": 1
    }],

    Data: null
}

console.log(ajaxCall(contacts.Data));//null
ajaxCall.call (contacts, contacts.data);
 console.log (window.Data); //undefined
 console.log (contacts.Data); // null
{p}用于此console.log (contacts.Data) call使用contacts。我希望,对于ajaxCall函数中的数据来存储从<xsl:function name="isPrime"> <xsl:param name="var1"/> <xsl:param name="var2"/> <xsl:value-of select="$var1='0' and $var2=1"/> </xsl:function> <xsl:when test="isPrime($var1, $var2)"> .... <xsl:when test="isPrime($var1, $var2)"> .... <xsl:when test="isPrime($var1, $var2)"> 对象发送的数据,从而为布局显示'getContacts'。但它显示为null。这意味着它仍然使用联系人内部的数据。同样对于window.Data,它返回undefined。我期待getConversations。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

此方法:

function ajaxCall(arrayOfdata){
    var score = arrayOfdata;
    return score;
    this.Data = score['layout']; // nothing will execute below the return statement.
}

this.Data设置之前返回..

你需要这个:

function ajaxCall(arrayOfdata){
    var score = arrayOfdata;
    this.Data = score['layout'];

    return score;
}

致电this.Data

我会小心定义全局变量并在函数中引用它们。

this.Data可能会引用不属于窗口范围的this ...

您将其留给那个正在调用方法传递范围的人,这是不理想的。最好只使用返回值,或创建类结构。

console.log(contacts.Data)返回undefined,为什么?

实际上,如果你看:

var contacts = {
   data : [{
      "option": "com_easysocial",
      "userId": localStorage.getItem("ckuser"),
      "layout": "getContacts",
      "view": "conversations",
      "format": "json",
      "limit": 1
    }],

    Data: null
}

contacts.data是一个数组,所以

function ajaxCall(arrayOfdata){
    var score = arrayOfdata;
    this.Data = score['layout']; // score here is an array

    return score;
}

在这里,您看到得分是一个数组,您尝试使用字符串键进行访问,而不是执行以下操作:

this.Data = score[0]['layout'];