Javascript,当对象的属性改变时回调?

标签 javascript jquery

javascript 中的函数是对象:

var x = function(){};
x.y = 1;
console.log(x.y); //Prints 1

有什么方法可以在 y 改变时调用函数吗?

我这样做的原因是我试图覆盖 jquery 的“$”函数,以便我可以对性能进行基准测试。当 JS 运行 $('mySelector') 时它工作正常。但是,使用 $.fn.myPlugin 创建的插件将更改我覆盖的对象中的属性,而不是原始对象中的属性。

最佳答案

我相信您正在寻找的是 JavaScript setters 。小心研究浏览器支持困难。

以下示例来自 MDN 文档。首先,当您创建自己的对象时:

var o = {a: 7,
         get b() {return this.a + 1;},
         set c(x) {this.a = x / 2}};

其次,当您扩充现有原型(prototype)时:

var d = Date.prototype;
d.__defineGetter__("year", function() { return this.getFullYear(); });
d.__defineSetter__("year", function(y) { this.setFullYear(y); });

关于Javascript,当对象的属性改变时回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495797/

相关文章:

javascript - Object.create() 无法访问函数内的变量

javascript - 使用 jQuery 的复选框

javascript - 多个物体不摆动,保持卡住

jquery - 使用 Jquery 修改下拉列表

带有 async=true 的 JQuery .ajax 总是返回错误

c# - Action 链接鼠标悬停?

Javascript/ES6 forEach 问题

javascript - 使用下拉列表过滤后如何保留多选框中的选定值

javascript - 在 Bootstrap 中通过悬停显示附加部分

jquery - 将未知高度的 jQuery UI 对话框居中 - 这可能吗?