var v = new Array('Bill','Erik','Pam');
v.toString();
v.constructor;在Firebug 1.7.3中,FF 5.0.1
v.constructor //Returns "undefined, not Array();另外:
var s = new String('Couch Potato');
s.indexOf('Couch');
s.slice(1,5);
s.split(" ");
s.join(' '); //FF returns "s.join" is not a function.为什么会这样呢?
发布于 2011-08-09 00:39:57
对于构造函数属性,显然firebug有一个bug。尝试警告该值(alert([].constructor)),您将看到它不是undefined。
join方法是一个数组方法,firebug在字符串上调用它时显示错误是很正常的。在javascript中,String不像在其他语言中那样是char数组(可能您搞混了)。
在本例中,调用join方法的唯一方法是将字符串转换为数组:"abcd".split('').join('')。
发布于 2011-08-09 00:30:38
在FF 5.0.1中,我得到这样的结果:
var arr = [1,2,3];
typeof arr.constructor // function但如果没有typeof,我会得到这样的结果:
var arr = [1,2,3];
arr.constructor // [ undefined ]...which显示undefined,但它在数组中。我猜这只是FireBug中的显示问题。
试着这样做:
var arr = [1,2,3];
var arr_2 = arr.constructor( 4,5,6 );...您将看到arr_2是您所期望的数组。
关于您的数组不是一个函数,这是因为s仍然是一个字符串,而不是一个.join()。这是因为.split()不会将字符串更改为数组,而是返回数组。
你可以这么做,
s = s.split(" ");
var joined = s.join(' ');..。它会起作用的。
发布于 2011-08-09 00:27:06
我不确定构造函数(它在Chrome上工作正常),但join方法不是字符串,也不是字符串。
你可以将一个数组连接成一个字符串,例如
[1, 2, 3].join(" ") === "1 2 3";但是字符串不能连接-它应该做什么?
https://stackoverflow.com/questions/6985193
复制相似问题