为什么原型中的javascript函数返回true或false
我有一个模块。我正在做的是,当我创建一个新的object为什么原型中的javascript函数返回true或false,javascript,jquery,Javascript,Jquery,我有一个模块。我正在做的是,当我创建一个新的objectfunc实例时,模块内的函数会在构造函数内自动调用func()如果b为真则返回真,否则返回假。但是,它返回对象,即模块为什么? var Module = function () { this.func() }; Module.prototype = function () { var b = true; func = function() { if (b) { return tru
func
实例时,模块内的函数会在构造函数内自动调用func()
如果b为真则返回真,否则返回假。但是,它返回对象,即模块
为什么?
var Module = function () { this.func() };
Module.prototype = function () {
var b = true;
func = function() {
if (b) {
return true;
}
return false;
};
return {
func: func
}
}();
console.log(new Module());
当我停止调用构造函数中的anyMobile()
函数,创建IsMobile
的新实例,然后像下面那样调用anyMobile()
时,它会返回true或false
var m = new Module();
m.func(); //Works
因此—
return {
func: func
}
任何要公开访问的移动设备都是一个包含函数的对象
如果您改为执行func:func()
(这将是一个返回布尔值的函数调用),它应该可以工作
查看解释得很好的概念示例中的第一行是声明一个充当构造函数的函数
var IsMobile = function () { this.anyMobile() };
当你调用新的IsMobile()时
创建一个新的对象OBJ,并将IsMobile.prototype作为其proto对象(以继承在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());
此外,由于navigator对象没有改变,您可以简单地保留返回值,而不是每次都计算它
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?你对找到的工作原始文件做了一些奇怪的事情,你可能想替换你的codecheck我的更新帖子