你的樣品中的第一行是宣佈作爲一個構造函數。
var IsMobile = function() { this.anyMobile() };
當你調用新IsMobile()
- OBJ與IsMobile.prototype創建爲它的原型對象(繼承上IsMobile.prototype定義的屬性)
- 構造一個新的對象函數IsMobile被調用時綁定到OBJ
- 如果構造函數返回一個對象,則返回該對象,否則返回OBJ
在你的情況,在構造函數代碼中調用anyMobile()方法,但返回值被忽略。
我建議你改變你的代碼不創建每次新IsMobile對象,像這樣:
IsMobile = function() {
var android = function() {
return navigator.userAgent.match(/Android/i);
},
blackBerry = function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS = function() {
return navigator.userAgent.match(/iPhone/i);
},
windows = function() {
return navigator.userAgent.match(/IEMobile/i);
},
anyMobile = function() {
if (android() || blackBerry() || iOS() || windows()) {
return true;
}
return false;
};
return anyMobile;
}();
console.log(IsMobile());
而且,由於導航對象不改變,你可以簡單地保留返回值和不要每次都計算一次。
IsMobile = function() {
var android = function() {
return navigator.userAgent.match(/Android/i);
},
blackBerry = function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS = function() {
return navigator.userAgent.match(/iPhone/i);
},
windows = function() {
return navigator.userAgent.match(/IEMobile/i);
},
anyMobile = function() {
if (android() || blackBerry() || iOS() || windows()) {
return true;
}
return false;
};
return anyMobile();
}();
console.log(IsMobile);
不是很明白,您在第一種情況下如何調用IsMobile? – jcubic
你做了一些奇怪的事情,找到工作的原始[這裏](http://www.abeautifulsite.net/blog/2011/11/detecting-mobile-devices-with-javascript/),你可能想要替換你的代碼 –
檢查我更新的帖子 – 2619