javascript - 在 JavaScript 中临时修改对象实例的方法和属性

标签 javascript scope this

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

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”而不是变量名。

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

最佳答案

你可以这样做:

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

或者,更简单:

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

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

关于javascript - 在 JavaScript 中临时修改对象实例的方法和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047859/

相关文章:

javascript - 将数组转换为字符串的函数循环,同时添加 <option>

javascript - 限制共享变量的范围 (Javascript)

java - 设置按钮可见

javascript - 如何柯里化(Currying) jQuery 方法——哪个 `this` 值将传递 jQuery 对象?

java - 何时在 Java 中使用 "this"

javascript - 如何从 Meteor 中的动态模板调用方法

javascript - 带GA等参数的异步JS调用

javascript - 带有对话框的 jquery ui 循环

javascript - 作为参数传入的函数 - 访问其他参数?

C++11 lambda : when do we need to capture [*this] instead of [this]?