我不能直接访问对象中的字段,也不能使用getter函数访问

I cannot access fields in my object directly or with a getter function

本文关键字:访问 也不能 函数 getter 字段 不能 对象      更新时间:2023-09-26

几个小时以来,我一直在为这个微不足道的问题绞尽脑汁。我只是想做下面的代码显示,它不适合我。它在JSFiddle中工作得很好,但在我的环境中不行。如果你之前读过这篇文章,我转发是因为我很绝望,每个人都发现了打字错误,这并不是真正的问题。我也很遗憾。
如果我定义了一个toString方法,出于某种原因,它可以工作。如果我定义了一个getMid()函数,那就不起作用了。如果我使用toString作为一个hack getMid()函数,它可以工作。我很困惑。我的文档类型或任何其他html/js标题会影响它吗?我用<!DOCTYPE HTML>。这对我来说在所有浏览器中都失败了,我在另一台电脑上尝试过。谢谢你帮我解开这个谜团。

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);

再次感谢你,Dale

编辑,在testArray赋值后添加"optional"分号。

我期待什么,但没有定义。我想我已经缩小范围了。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());

第一个警报给我一个有效的结果。第二个警报未定义。奇怪的是finalSet[0]。toString给我一个有效的结果。所以我认为这可能归结为,我如何在for循环中打破这个东西。当我通过JSLint问题运行它时,我得到以下错误/警告:"第15行字符14:无法设置未定义的属性'first'"第15行是for循环的核心。我感谢所有的回应。

splice函数返回一个包含被删除元素的数组。如果只删除一个元素,则返回一个只有一个元素的数组。(源)


这意味着这段代码将一个包含对象的数组添加到testArray中,而不仅仅是添加对象:
testArray.push(availableCardsForSet.splice(Math.floor(Math.random()*availableCardsForSet.length),1));

它可以很容易地固定使用[0]

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

下面是一个例子:http://jsfiddle.net/grc4/8Auvm/

我尝试了下面的doctype,它为我工作,

测试浏览器:IE8、Firefox3

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

function Card (first, last, mid) {
这一点。
这一点。
这一点。Mid = Mid;}
var testArray =[新卡("A"、"B"、"C"),新卡("D"、"E"、"F")];
警报(testArray [1] .mid);

相关文章: