一個小項目,我想讓其基於他們的引擎的瀏覽器一個小小的圖書館:JavaScript屬性賦值(香草)
var engine = {
opera: function(){
var ua = navigator.userAgent.toLowerCase(),
version = ua.match(/opera[\/\s](\d+\.\d+)/);
if (version){
return parseFloat(version[1]);
}
},
webkit: function(){
var ua = navigator.userAgent.toLowerCase(),
version = ua.match(/applewebkit\/([\d.]+)/);
if (version && !engine.opera()){
return parseFloat(version[1]);
}
},
gecko: function(){
var ua = navigator.userAgent.toLowerCase(),
version = ua.match(/rv\:([\w\.]+).\s(gecko)/);
if (version && !engine.opera()){
return parseFloat(version[1]);
}
},
ie: function(){
var ua = navigator.userAgent.toLowerCase(),
version = ua.match(/msie (\d+\.\d+)/);
if (version && !engine.opera()){
return parseFloat(version[1]);
}
},
touch: function(){
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/android|ipod|iphone|ipad|iemobile|bb[\d]\d|blackberry|playbook|silk|touch|mobile/)){
return true;
}
else {
return false;
}
}
};
調用具有:engine.webkit()<534.3
檢查,如果這是一個WebKit的基於瀏覽器比是在安卓4.0等使用舊的
正如你看到我使用屬性賦值來封裝發動機檢測,不污染全球命名空間。
但是 - 對於每個單引擎,我創建的變量ua,顯然它沒有被重用,因此也不是最佳實踐。
有人可以告訴我如何在引擎對象內定義var ua一次嗎?
謝謝
只需添加'ua'到'engine'對象,然後改變所有的功能,裏面的'ua'引用'this.ua' – MinusFour