我只是想避免这种情况
if(typeof myObject !== 'undefined' && myObject !== null)
{
//safely use myObject
}
Run Code Online (Sandbox Code Playgroud)
所以我试过这个
Object.prototype.doesExist = function() {
return (typeof this !== "undefined" && this !== null);
}
Run Code Online (Sandbox Code Playgroud)
其次是
if(myObject.doesExist()){
//safely use myObject
}
Run Code Online (Sandbox Code Playgroud)
但结果当然是myObject没有定义
它理解为什么这不起作用,但有没有人想出一个更好的方法来完成我正在寻找的东西?
如注释中所述,null或者undefined不是a的实例Object,因此它们不会继承Object的原型.
解决方案1:使用静态Object方法,这是一个功能性但不是很干净的解决方案,类似于您尝试的方法.
Object.exists = function(obj) {
return typeof obj !== "undefined" && obj !== null;
}
if (Object.exists(myObject)) {
// safely use myObject
}
Run Code Online (Sandbox Code Playgroud)
方案2:使用instanceof如果你知道你期待什么类型的对象.如果要在if语句中访问ClassName的接口,建议使用此方法.
if (myObject instanceof ClassName) {
// safely use myObject
}
Run Code Online (Sandbox Code Playgroud)
例子:
function A() {}
var a = new A(), b;
> a instanceof A
true
> a instanceof Object
true
> b instanceof A
false
> b instanceof Object
false
> null instanceof A
false
> null instanceof Object
false
> undefined instanceof A
false
> undefined instanceof Object
false
Run Code Online (Sandbox Code Playgroud)
我认为这可以处理你的用例
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |