3
使用時關閉編譯器ADVANCED_OPTIMIZATIONS,jQuery.ajax.data對象改變:如何在使用閉包編譯器時保留jQuery.ajax.data對象?
$.ajax({
type: "POST",
url: "ajax.php",
data: {
act : "some"
},
success : function(data){}
});
jQuery.ajax.data對象轉換爲{L : "some"}
我可以使用引號,像'act' : "some"
,但我想這工作沒有引號。 在我的externs文件中有:
/** @type {Object.<string,*>} */ jQuery.ajax.data;
但這不起作用。 Closure編譯器版本1043
你需要引號告訴封閉不破壞財產名稱。這是一項要求。你不能在沒有引號的情況下使用它。 – 2011-06-15 08:50:24
你的外部文件也不正確。 'jQuery.ajax.data'表示'jQuery.ajax'下的'data'屬性。 'jQuery.ajax'(這是一個函數)沒有'data'屬性。 'data'是作爲參數傳遞給'jQuery.ajax'的對象的屬性。你是「外部」錯誤的東西。 – 2011-06-23 06:05:51
但是,如果你這樣做:'var foo = {}; foo.act = null;'在你的extern文件中,Closure將不再重命名任何名爲「act」的屬性(或者任何名爲「foo」的變量,你不關心)** ALL **對象,*包括*在你的對象散列中傳遞給「數據」屬性。但是,請注意,所有名爲「act」的屬性都不會重命名,即使您希望它們也可以! – 2011-06-23 06:07:32