Javascript 我无法直接或使用getter函数访问对象中的字段

Javascript 我无法直接或使用getter函数访问对象中的字段,javascript,Javascript,我已经为这个小问题绞尽脑汁好几个小时了。 我只是想做下面的代码显示的事情,但它不适合我。它在JSFIDLE中运行良好,但在我的环境中不起作用。如果你早些时候读过这篇文章,我会转载,因为我绝望了,每个人都发现了错别字,这其实不是问题所在。哎呀,对我来说。 如果我定义了一个toString方法,那是因为某种原因。如果我定义了一个getMid()函数,它就不起作用了。如果我使用toString作为一个hacky getMid()函数,它可以工作。我也很困惑。 我的doctype或任何其他html/js

我已经为这个小问题绞尽脑汁好几个小时了。 我只是想做下面的代码显示的事情,但它不适合我。它在JSFIDLE中运行良好,但在我的环境中不起作用。如果你早些时候读过这篇文章,我会转载,因为我绝望了,每个人都发现了错别字,这其实不是问题所在。哎呀,对我来说。
如果我定义了一个toString方法,那是因为某种原因。如果我定义了一个getMid()函数,它就不起作用了。如果我使用toString作为一个hacky getMid()函数,它可以工作。我也很困惑。 我的doctype或任何其他html/js标题会影响它吗?我只是在用
。 我在所有浏览器中都失败了,我已经在另一台计算机上尝试过了。谢谢你帮我解开这个谜

function Card (first , last , mid) {
    this.first = first ;
    this.last = last ;
    this.mid = mid ;

}

var testArray = [ new Card("A", "B", "C"), new Card("D", "E", "E") ];

alert(testArray[1].mid);
再次感谢你,戴尔

编辑以在testArray赋值后添加“可选”分号

我期待任何事情,但没有定义。我想我已经缩小了范围。testArray是这样构建的:

alert(availableCardsForSet[0].cost);
for (var int = 0; int < 10 && testArray.length < 10; int++) {
testArray.push(availableCardsForSet.splice(Math.floor(Math.random()*availableCardsForSet.length),1));
}
alert(testArray[0].cost);
alert(testArray[0].toString());
警报(availableCardsForSet[0]。成本);
对于(var int=0;int<10&&testArray.length<10;int++){
testArray.push(availableCardsForSet.splice(Math.floor(Math.random()*availableCardsForSet.length),1));
}
警报(测试阵列[0]。成本);
警报(testArray[0].toString());

第一个警报给了我一个有效的结果。第二个警报给了我未定义的信息。奇怪的是,finalSet[0]。toString给了我一个有效的结果。所以我想这可能是因为,我是如何在我的for循环中打破这个东西的。当我在“第15行字符14:无法设置未定义的属性'first'时”的JSLint问题中运行它时,我得到了以下错误/警告。第15行是for循环的核心。我感谢所有的答复。希望这些新信息能有所帮助。

我用下面的doctype试用过,它对我有效,

测试的浏览器:IE8、Firefox3

功能卡(第一、最后、中间){
this.first=first;
this.last=last;
this.mid=mid; }

var testArray=[新卡(“A”、“B”、“C”)、新卡(“D”、“E”、“F”)]
警报(testArray[1].mid)

splice函数返回一个包含已删除元素的数组。如果只删除一个元素,则返回一个元素的数组


这意味着此代码将包含对象的数组添加到testArray,而不仅仅是添加对象:


使用
[0]

testArray.push(availableCardsForSet.splice(Math.floor(Math.random()*availableCardsForSet.length),1)[0]);

这里有一个例子:

您在
var testArray…
line上缺少一个分号,不管有没有分号,它都会令人惊讶地工作。。。。。在JSFIDLE中就是这样。在我的代码中,我有分号。@grc:分号在JavaScript中基本上是可选的。我知道浏览器有时允许您忽略它们,但在严格的环境中可能会出现问题。您能说一下您在什么环境中遇到这个问题吗?谢谢!我很恼火,我之前没弄明白。你能推荐一种更好/更快的方法来完成我正在尝试的工作吗:从数组中随机选择/删除一个项目。再次感谢你的帮助。
testArray.push(availableCardsForSet.splice(Math.floor(Math.random()*availableCardsForSet.length),1)[0]);