首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS OOP内置对象数组

JS OOP内置对象数组
EN

Stack Overflow用户
提问于 2011-08-09 00:23:08
回答 3查看 72关注 0票数 0
代码语言:javascript
复制
var v = new Array('Bill','Erik','Pam');
v.toString();
v.constructor;

在Firebug 1.7.3中,FF 5.0.1

代码语言:javascript
复制
v.constructor //Returns "undefined, not Array();

另外:

代码语言:javascript
复制
 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.

为什么会这样呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-09 00:39:57

对于构造函数属性,显然firebug有一个bug。尝试警告该值(alert([].constructor)),您将看到它不是undefined

join方法是一个数组方法,firebug在字符串上调用它时显示错误是很正常的。在javascript中,String不像在其他语言中那样是char数组(可能您搞混了)。

在本例中,调用join方法的唯一方法是将字符串转换为数组:"abcd".split('').join('')

票数 1
EN

Stack Overflow用户

发布于 2011-08-09 00:30:38

在FF 5.0.1中,我得到这样的结果:

代码语言:javascript
复制
var arr = [1,2,3];

typeof arr.constructor // function

但如果没有typeof,我会得到这样的结果:

代码语言:javascript
复制
var arr = [1,2,3];

arr.constructor // [ undefined ]

...which显示undefined,但它在数组中。我猜这只是FireBug中的显示问题。

试着这样做:

代码语言:javascript
复制
var arr = [1,2,3];

var arr_2 = arr.constructor( 4,5,6 );

...您将看到arr_2是您所期望的数组。

关于您的数组不是一个函数,这是因为s仍然是一个字符串,而不是一个.join()。这是因为.split()不会将字符串更改为数组,而是返回数组。

你可以这么做,

代码语言:javascript
复制
s = s.split(" ");
var joined = s.join(' ');

..。它会起作用的。

票数 2
EN

Stack Overflow用户

发布于 2011-08-09 00:27:06

我不确定构造函数(它在Chrome上工作正常),但join方法不是字符串,也不是字符串。

你可以将一个数组连接成一个字符串,例如

代码语言:javascript
复制
[1, 2, 3].join(" ") === "1 2 3";

但是字符串不能连接-它应该做什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6985193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档