1

我希望能够添加/修改对象的属性和方法,而不必经常引用对象变量。例如:

var myObj = new MyClass();

myObj.function() {
    this.str = 'String';
    this.fn =  function() {
        // Function here...
    }
}

相对于:

var myObj = new MyClass();

myObj.str = 'String';
myObj.fn = function() {
    // Function here...
}

我知道第一个示例不起作用,因为您不能以这种方式调用匿名函数。但是,有没有办法能够做这样的事情,以便可以在对象变量范围内编写代码块。我希望能够使用“this”而不是变量名。

请注意,我只想对对象的单个实例执行此操作……我不需要修改类或创建新类。

4

2 回答 2

3

你可以这样做:

(function () {
    this.str = 'String';
    this.fn = function () { /* ... */ };
}).call(myObj);

或者,更简单:

(function (x) {
    x.str = 'String';
    x.fn = function () { /* ... */ };
})(myObj);

但我不得不问你为什么要这样做。是不是myObj有些长得离谱的名字?

于 2012-12-27T00:16:07.780 回答
3
function decorateInstance() {
    this.foo = "42";

    this.go = function() {
        return this.foo;
    }
}

var o = {};
decorateInstance.call(o);
console.log(o.foo);
console.log(o.go());​
于 2012-12-27T00:16:53.880 回答