html base
<html>
<head>
</head>
<body>
<input type="text" class="abc"/>
</body>
</html>
所以我有我的原型对象
function AnArray(){
this.anArray=[];
}
AnArray.prototype.getAnArray=function(val){
return this.anArray[val];
}
AnArray.prototype.setData=function(index,val){
this.anArray[index].data=val;
}
var objAnArray=new AnArray();
对象最终看起来像这样
id: 1, pid: "questions-worth-asking", num: 1, data: null
我试图改变其中的属性
objAnArray.setData(0,$(".abc").eq(0).val());
当我在上面一行之前和之后使用getAnArray()编辑console.log消息时,它会返回与尚未更改的值相同的值。
我的问题是如何更改原型对象的属性?
编辑:此链接引导我沿着正确的路径http://www.gpickin.com/index.cfm/blog/websql-when-is-a-javascript-object-not-a-javascript-object
答案 0 :(得分:1)
您的帖子中遗漏了很多信息,这些信息很难调试。
据我所知,问题在于:
value
属性存储在包装在对象中的数组中。setData
函数存储此属性。getAnArray
函数来检索该对象。我不认为这是原型的问题,但由于缺乏给我们的信息,它可能是任何数量的东西。如果你回来说“噢,这完全是另一回事。”我不会感到惊讶。
我创建了一个fiddle,可以成功设置和获取您可以用作anArray
对象的数据。
以下是您希望查看的一些问题,可以帮助您进行调试:
anArray[index]
对象。因此,如果我们要采用面值,setData
函数应该抛出ReferenceError
。setData
函数还是在页面加载时调用。如果是后者,那么根据您在顶部发布的html,您在input
字段中将没有任何数据。只有当字段中有数据时才需要调用setData
函数。$(document).ready(function(){ ... })
调用之外的jQuery对象,因此您使用$(".abc")
调用获得的值未定义。尝试一下,希望那些工作。
为了使您的问题更容易调试,请继续:
anArray
数组,所以我不得不做出假设。我们也不知道id
,pid
或"questions-worth-asking"
的来源,因此可能会产生副作用。编辑:
我知道您在console.log
方法之前和之后都在调用setData
。考虑将console.log 放在 setData
方法中。
AnArray.prototype.setData = function (index, val) {
console.log("Entering setData with: ", index, val, this.anArray[index]);
this.anArray[index].data = val;
console.log("Exiting setData with: ", this.anArray[index]);
};
答案 1 :(得分:1)
在我看来,问题不在你的javascript中。你说你在objAnArray上调用setData之前和之后运行了一个console.log。也许它与您的HTML输入元素未更新或数据未及时通过有关。
像Keane所说,我们需要有关您的设置和逻辑流程的更多信息。