javascript - 是否可以覆盖某些 Javascript 命令?

标签 javascript methods javascript-objects

如果我创建了一个具有数组作为属性的对象,是否可以在该对象中编写一个方法,以便在创建实例后,硬编码命令现在的行为有所不同?

例如,如果我定义了一个构造函数:

function Bunny(){
       this.arr = [1,2,3];
       this.doSomething = function(){
         //  do something here
        } 
 }

然后创建一个新实例:

fluffy = new Bunny();

是否可以在“this.doSomething”中编写一些内容,以便当我执行预定义命令时,例如:

fluffy.arr[0]=7;

所产生的操作(除了或代替将数组的第 0 个条目从 1 更改为 7)是,例如,弹出一个警报,显示“复活节快乐!”?

最佳答案

在某种程度上你可以。输入:Proxies .

代理充当对象的包装器,并允许您拦截该对象属性上的某些事件。

let arr = [1, 2, 3];

// Wrap the array in a proxy
arr = new Proxy(arr, {
  get(target, name) {
    // Whenever the user accesses the ith element
    // alert, 'Happy Easter! i'
    alert(`Happy Easter! ${name}`);
    
    // Return the actual value
    return target[name];
  },
  
  // You can also target setters
  set(target, name, value) {
    // Whenever the user sets the ith element
    // alert, 'Merry Christmas! i'
    alert(`Merry Christmas! ${name}`);
    
    target[name] = value;
  }
});

// Can still set values since a setter wasn't set
arr[0] = 7;
console.log(arr[0]);

关于javascript - 是否可以覆盖某些 Javascript 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117686/

相关文章:

java - Java 日历的设置方法仅在我打印它时才有效

javascript - 添加 Loader 直到 STL 图像加载 PHP

javascript - AngularJS ng-repeat 不适用于 Promise.all

php - 从函数调用 PHP 对象方法

java - 继承不能调用子类方法

javascript - 使用 javascript 进行 Bootstrap 模式调用,最佳实践

javascript - 与 Three.js 类似的构造函数

javascript - jQuery - 一次调用中的多个选择器和多个值

javascript - Node.js 自定义渲染构建

JavaScript;使用 "hasOwnProperty"是多余的吗?