Javascript原型(prototype)和修改原始对象

标签 javascript arrays prototypal-inheritance prototype-programming array.prototype.map

我们如何更新原型(prototype)中传递的对象?我已经创建了与 Array.reverse 类似的原型(prototype),但是如何修改原始对象?

Array.prototype.myReverse = function() {
  let arr = [];
  for (let i = 0; i < this.length; i++) {
    arr.unshift(this[i]);
  }
  return arr;
}

let a = [9, 0, 3, 4];
console.log("Before ", a); // [9, 0, 3, 4]
console.log("reverse - ", a.myReverse()); // [4, 3, 0, 9]
//not modifying original object , how to modify original object
console.log("After ", a); // [9, 0, 3, 4]

我检查了几个例子,但我不知道如何更新原型(prototype)中的原始对象 我们如何创建一个原型(prototype)来更新原始对象(注意:反向是破坏性的——它会改变原始数组。)如果预定义数组不可能,那么我们如何创建类似的 MyArray 来编写用于更新原始对象的原型(prototype).

最佳答案

您不能直接分配this,但您仍然可以更改它的属性。因此,保持您发布的代码的风格,您可以按照以下方式做一些事情:

Array.prototype.myReverse = function() {
  let arr = [...this]
  for (let i = 0; i < this.length; i++) {
    this[i] = arr.pop()
  }
}

关于Javascript原型(prototype)和修改原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613346/

相关文章:

javascript - Extjs:通过构造函数或 initComponent 扩展类?

javascript - Javascript 中的原型(prototype)链未更新

javascript - 使用指令 Controller 进行 Angular 缩小?

c - 在 C 中解析 JSON 数组

c++ - rapidjson c++ 在对象中释放数组

python - 如何在 numpy 中添加附加和分隔列

JavaScript 原型(prototype)继承困惑——我在这里错过了什么?

JavaScript 函数返回 'NaN' 或 'undefined'

javascript - 自定义元素上的属性/属性名称

javascript - 如何在 JS 甘特图中实现 MYSQL 数据获取?