当对象在JavaScript中创建或修改键/值时,有没有办法触发回调?

时间:2010-11-09 20:21:23

标签: javascript

我试图找出如何在JavaScript中创建一个对象,该对象将触发创建和更改任意键/值的事件。这是一些伪代码:

var User = function () {
    var user = {};

    function keyAdded() { /* trigger an event */ }
    function keyChanged() { /* trigger an event */ }

    return user;
},
u = new User();

u.test = "testing"; // I want this to trigger an event (keyAdded)
u.test = "more testing"; // I want this to trigger another event (keyChanged)

我被困住了。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

function User() {
    this.assign = function(key, value) {
        if ( !this.hasOwnProperty(key) ) {
            this[key] = value;
            alert("key added");
        } else {
            this[key] = value;
            alert("key changed");
        }
    };
    return this;
}

u = new User();

u.assign("test", "testing"); // will alert "key added"
u.assign("test", "more testing"); // will alert "key changed"

答案 2 :(得分:1)

您应该在User上定义一个getter和setter。 这样,访问该对象的属性将触发这些函数。

查看Mozilla documentation about them