正确检测抽象对象/引用类型的方法
Correct way to detect abstract objects / reference types?
使用
$P.isObjectAbstract = function (obj) {
return obj === Object(obj);
};
我得到jslint错误:
第77行字符31使用对象文字符号{}orObject.create (null)。
然而,这个形式(下面)产生不同的结果。
$P.isObjectAbstractZ = function (obj) {
return obj === Object.create(obj);
};
我使用术语objectAbstract来区别于objectLiteral,后者将具有更简单的形式var object_literal = {}
。
一个objectAbstract只是一个带有键的东西,可以像localStorage.some_key
那样访问(更具体地说,这是一个神奇的主机对象)。
是否有一个jslint正确的方法来测试抽象对象?
JSLint在这里显示了对Javascript的不良了解,并认为您正在做new Object()
,这不是创建新对象的推荐方法。建议使用对象字面值或Object.create
。
用参数调用Object
是完全不同的。它通常用于检测某物是基本类型还是引用类型。
你可以使用:
来绕过JSLint$P.isObjectAbstract = function(obj) {
return obj === {}.constructor(obj);
};
请注意,就像我上面说的,这并不像"检测抽象对象"那样。适当的名称应该是isReference
或isReferenceType
或其他。
相关文章:
- 似乎行为与引用类型不同的引用类型
- 值和引用类型
- 在引用对象方法时,是否应该将其存储在变量中?(JavaScript)
- Javascript - 原始与引用类型
- 为什么像这样向 JavaScript 引用类型添加方法不起作用
- 是否有媒体查询类型方法可以根据设备切换js文件
- 从JavaScript中的另一个方法属性中引用对象方法属性
- ASP.Net Web服务中的引用页面方法
- 变量存储函数作为基元类型或引用类型
- 如何在Javascript中使用共享的、不可变的引用类型来跟踪更改
- EXT JS 5:为什么我不能获得引用类型的模型对象
- Array.prototype.引用类型上的恶意行为
- 作为条件和引用类型的函数
- 正确检测抽象对象/引用类型的方法
- 引用类型值和初始化
- 如果我使用原型创建OOP JS代码,我如何从循环中引用类方法
- 字符串:javascript中的基本类型变量或引用类型变量
- JavaScript中简单类型方法的委托
- javascript中的值类型引用类型对象
- 在JQuery中,将一个对象数组复制到另一个数组是它的引用类型