JavaScript对象问题

JavaScript Object questions

本文关键字:问题 对象 JavaScript      更新时间:2023-09-26

假设我有一个名为options的对象。在对象内部,我有一个名为imageTypes的键。我正在尝试测试png是否与任何一个imageTypes匹配。我在这里做错了什么。谢谢你们的投入!

    var options = {
         imageTypes: /'.(gif|jpe?g|png)$/i
    }
    if (options.imageTypes.test(image/png)) {
        //do stuff
    }

在调用test之前,您正在使用数学运算(即除法)。这将导致RegEx被呼叫一个号码,而这个号码实际上并没有那么好用。

如果图像是您的变量,请删除/png。或者,如果您试图比较"image/png"(即字符串),则必须在前面和后面输入引号。

在jsFiddle上进行了测试,您可以在控制台输出中找到结果。

信息

希望这能帮助你理解你正在努力实现的目标:http://jsfiddle.net/pratik136/YZ5ZD/

var options = {
    imageTypes1: /'.(gif|jpe?g|png)$/i,
    imageTypes2: /image'/(gif|jpe?g|png)$/i
};
if (options.imageTypes1.test('.png')
    && options.imageTypes2.test('image/png')) {
    //do stuff
    showResult('true');
} else {
    showResult('false');
}

imageTypes1是一个Regex,它将匹配类似.png的字符串,而imageTypes2正试图匹配image/png


那么怎么了

代码示例中的语法错误是image/png周围缺少引号,而逻辑错误是使用了错误的正则表达式。

如果您想将"image/png"测试为字符串,那么您必须更改正则表达式,因为它现在检查点格式的图像扩展名。

var options = {
    imageType: function(pic) {
      return (/^image'/(gif|jpe?g|png)$/i).test(pic);
    }
};
// returns true
console.log(options.imageType('image/png'));