1
下面的代碼在使用google閉包編譯器高級模式編譯時會拋出警告/錯誤。谷歌封閉編譯器,JSC_INEXISTENT_PROPERTY與mixin /擴展問題
JSC_INEXISTENT_PROPERTY:房產getJerseyNumber從來沒有在球員
任何想法,我們如何解決這個定義?
var getDetails = {
getJerseyNumber: function() {
return Math.random();
}
};
/**
* @param {Object} source
* @param {Object} delta
*/
function mixIn(source, delta) {
for (var i in delta) {
source[i] = delta[i];
}
}
/**
* @type {{name: string , sport: string}}
*/
var player = {
name: 'Tom Brady',
sport: 'Football'
};
mixIn(player, /** @lends {player} */ getJerseyNumber);
alert(player.getJerseyNumber());
使用@lends只能使用對象文字。所以添加這條線會起作用,但有其他想法嗎?
mixIn(player, /** @lends {player} */ {
getJerseyNumber: function() {
return Math.random();
}
});
提供的代碼示例是一個很好的演示來解決上述問題,但基本上我正在尋找一種讓編譯器識別多個mixin的方法。這是一個方便的JS編程構造,並且正在被大量使用(一個流行的代碼庫使用jquery)。看起來,這將不得不等待,直到這個mixin功能登陸谷歌封閉編譯器。 – sbr 2014-12-29 22:52:11