2010-03-22 23 views
0

这个简单的正则表达式匹配返回一个字符串,而不是在每一个浏览器的对象,但在最新的Firefox ...比赛,据我知道这个比赛的功能是假设返回一个字符串,而不是对象

 text = "language. Filename: My Old School Yard.avi. File description: File size: 701.54 MB. View on Megavideo. Enter this, here:" 
    name = text.match(/(Filename:)(.*) File /); 
    alert(typeof(name)); 

返回一个对象(Array)。 有没有人遇到过这个问题?

回答

1

正则表达式match方法确实返回一个阵列,但在JavaScript数组只是从Array.prototype继承的对象,例如:

var array = "foo".match(/foo/); // or [];, or new Array(); 

typeof array; // "object" 
array instanceof Array; // true 
Object.prototype.toString.call(array); // "[object Array]" 

typeof操作者将返回"object",因为它可以不是普通的对象之间进行区分和一个数组。

在第二行中,我使用instanceof运算符来证明该对象实际上是一个数组,但在跨帧环境中工作时该运算符的值为known issues

在第三行我使用Object.prototype.toString方法,该方法返回包含[[Class]]内部属性的字符串,这个属性是一个值,该值指示对象的种类,一个更安全的方式来检测是否有物体数组或不是。

相关问题