使用时
$P.isObjectAbstract = function (obj) {
return obj === Object(obj);
};
我收到了jslint错误:
第77行字符31使用对象文字符号{}或 的Object.create(空)。
但是这种形式(下面)会产生不同的结果。
$P.isObjectAbstractZ = function (obj) {
return obj === Object.create(obj);
};
我使用术语objectAbstract来区分objectLiteral,它可以是更简单的var object_literal = {}
形式。
objectAbstract只是一个可以访问的键localStorage.some_key
(更具体地说,这是一个神奇的宿主对象)。
是否有jslint正确的方法来测试抽象对象?
答案 0 :(得分:2)
JSLint在这里显示Javascript知识不足,并认为你在做new Object()
,但事实并非如此
建议的创建新对象的方法。推荐的方式是object literal或Object.create
。
使用参数调用Object
完全不同。
它通常用于检测某些内容是基本类型还是引用类型。
您可以使用以下方法解决JSLint问题:
$P.isObjectAbstract = function(obj) {
return obj === {}.constructor(obj);
};
请注意,就像我上面所说的那样,就像“检测抽象对象”一样。一个正确的名称是isReference
或isReferenceType
或其他。