我正在努力将应用程序从Angular 1.2更新为Angular 1.4,并在课程中打破了一些业力测试。大多数都是简单的修复,但有一些我无法工作。测试依赖于检查是否定义了下载属性以确定如何下载所需文件。在升级之前,测试可以设置elem.download。升级后,我似乎无法设置下载。
以下是我为测试设置元素的方法:
var link = document.createElement('a');
link.download = undefined;
然后在代码本身,这是一个非常简单的
if(link.download !== undefined) {
//do stuff (this test works)
} else {
//do other stuff (this test doesn't work)
}
当我尝试将link.download设置为undefined时,它仍然会进入第一个分支。如果我尝试只传入一个空对象,我会出错,因为各种属性都是未定义的,即使代码似乎没有查看这些属性。
我还尝试设置link.download = null
并更改if语句以使用typeof
TL; DR 如何将下载属性设置为undefined?
这是simple Plunker的问题。
答案 0 :(得分:0)
设置为download
的值将转换为字符串值,因此undefined
已转换为"undefined"
,这就是它始终通过!==
比较的原因。
修改强>
根据您的评论,您希望对download
进行功能检测。所以要做到这一点
`download` in createElement('a')
//or
HTMLAnchorElement.prototype.hasOwnProperty('download')
然后,如果你想强制一个不存在的测试你可以从原型中删除download
delete HTMLAnchorElement.prototype.download;