我希望能够添加/修改对象的属性和方法,而不必经常引用对象变量。例如:
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'而不是变量名。
请注意,我只想为对象的单个实例执行此操作...我不需要修改类或创建新类。
答案 0 :(得分:3)
你可以这样做:
(function () {
this.str = 'String';
this.fn = function () { /* ... */ };
}).call(myObj);
或者,甚至更简单:
(function (x) {
x.str = 'String';
x.fn = function () { /* ... */ };
})(myObj);
但我不得不问你为什么要这样做。 myObj
名字有点荒谬吗?
答案 1 :(得分: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());