gpt4 book ai didi

javascript - 如何更改 javascript 原型(prototype)对象的属性

转载 作者:行者123 更新时间:2023-12-02 16:12:09 25 4
gpt4 key购买 nike

html 基础

<html>
<head>
</head>
<body>
<input type="text" class="abc"/>
</body>
</html>

所以我有我的原型(prototype)对象

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 消息时,它返回的值与未更改的值相同。

我的问题是如何更改原型(prototype)对象的属性?

编辑:此链接引导我走上了正确的道路http://www.gpickin.com/index.cfm/blog/websql-when-is-a-javascript-object-not-a-javascript-object

最佳答案

您的帖子中遗漏了很多信息,这使得调试变得困难。

根据我的理解,问题在于:

  1. 您希望 jQuery 对象的 value 属性存储在您包装在对象中的数组中。
  2. 您希望使用您编写的 setData 函数存储此属性。
  3. 您想要使用您编写的 getAnArray 函数检索该对象。

我认为这不是原型(prototype)的问题,但由于缺乏向我们提供的信息,这可能是多种原因。如果您回来说“哦,这完全是另一回事。”我不会感到惊讶。

我做了一个fiddle成功设置并从 anArray 对象获取数据,您可以将其用作示例。

以下是您想要查看的一些问题,它们将有助于您进行调试:

  1. 您没有在此代码段中设置 anArray[index] 对象。因此,如果我们从表面上看,setData 函数应该抛出 ReferenceError
  2. 您还没有告诉我们您是在事件内部调用 setData 函数,还是在页面加载时调用。如果是后者,那么根据您在顶部发布的 html,您的 input 字段中还没有任何数据。仅当字段中有数据时,您才需要调用 setData 函数。
  3. 您可能在 $(document).ready(function(){ ... }) 调用之外调用 jQuery 对象,因此您使用 $( ".abc") 调用未定义。

尝试一下,希望它们能起作用。

为了让您的问题更容易调试:

  1. 在隔离环境中编写所有实验代码,以便在发布之前不必删除所有 secret 内容。
  2. 运行您的代码并确保其按预期运行。
  3. 向我们展示该代码的全部,以便我们了解所有数据的来源以及每个元素如何与其他元素交互。例如,我们目前不知道 anArray 数组是如何填充的,所以我不得不做出假设。我们也不知道 idpid"questions-worth-asking" 是如何产生的,因此可能会产生副作用这些已加载。
  4. 使用某种样式指南编写代码,使其更易于阅读。这还有助于缩短您的调试时间,并有助于防止您可能犯的愚蠢错误。

编辑:我知道您在 setData 方法之前和之后调用 console.log。考虑将 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]);
};

关于javascript - 如何更改 javascript 原型(prototype)对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com