2012-01-12 45 views
1

我已經看到了網絡下面的例子從一個WCF服務中獲得一個JSON Product對象到JS:嵌套的原型來自jQuery的

function Product(ProductName, ProductDesc, Price, Quantity) { 
    this.ProductName = ProductName; 
    this.ProductDesc = ProductDesc; 
    this.Price = Price; 
    this.Quantity = Quantity; 
} 

function CallWCFService(WCFServiceURL) { 
    $.ajax({ 
     type: "GET", 
     url: WCFServiceURL, 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     processdata: true, 
     success: function (msg) { 
      WCFServiceSucceeded(msg); 
     }, 
     error: WCFServiceFailed 
    }); 
} 

//On Successful WCF Service call 
function WCFServiceSucceeded(result) { 
    var productsArray = new Array(); 

    //Gets the Products 
    $.each(result, function (i, Product) { 
     productsArray[i]=Product; 
    }); 

    //Print all the product details 
    $.each(productsArray,function(i,Product) 
    { 
     alert(Product.ProductName + ' ' + Product.ProductDesc + ' ' + Product.Price + ' ' + Product.Quantity) 
    }); 
} 

(original source)

現在,我不能說什麼是真的應該發生在這裏(我的知識在JavaScript和jQuery中是可怕的小),但我可以說,我想了解這個片段,爲了能夠修改它以包含嵌套類型,即:而不是產品名稱我們將擁有WCF服務響應中的列表屬性及其自己的字段。

現在,具體地,在這個例子中,我不明白的地方被稱爲Product功能,它似乎是,它是在這裏:

//Gets the Products 
    $.each(result, function (i, Product) { 
     productsArray[i]=Product; 
    }); 

但對我來說似乎是不清楚Product是否存在作爲傳遞給$ .each的lambda的聲明參數的行爲,或者它是否實際調用了「構造函數」調用

您可以在此代碼中指導我嗎?

回答

3

Product功能不會被調用。事實上,如果沒有它,代碼就可以正常工作。發生什麼情況是由WCF調用返回的JSON對象的格式或結構與Product類(由Product函數定義)完全相同。

each函數接受一個陣列和用於該陣列中的每個項目執行它提供的匿名函數。匿名函數有兩個參數,iProducti是數組中項目的索引。 Product是在通過該項目的變量名。在這一點上,命名爲Product的變量陰影的Product功能。

看來該項目已被轉換爲Product類的原因是因爲所述對象具有相同的結構。