如何使用' this '像一个对象,并通过字符串获得它的变量/函数
How to use `this` like an object and get its variables/functions by a string?
我有一个对象
function Obj()
{
}
Obj.prototype.doSomething = function(thing)
{
this["do" + thing]();
}
Obj.prototype.doAlert = function()
{
alert("Alert!");
}
var obj = new Obj();
obj.doSomething("Alert");
这只是我的对象的简化版本,而且要大得多。
我想做的是,如果你传入'Alert'
,它将运行this.doAlert();
,如果我传入'Homework'
,它将运行this.doHomework()
;
显然,在这种情况下,这样做是愚蠢的,但我的最终项目将完全不同。
它可以很好地与window
:
window["do" + thing]();
但我不希望它是一个全局函数,但要成为obj
的一部分。
有人知道我会怎么做吗?
提前感谢!
事实证明,当您通过this['functionName']
获得函数时,this
不会绑定到它。
这意味着你不能在任何函数中使用this.foo
。
this["do" + thing].bind(this)();
代替this["do" + thing]();
JSFiddle: https://jsfiddle.net/auk1f8ua/
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- JavaScript按钮/输入/函数,字符串反转
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 从带参数的字符串变量调用函数中的函数
- 是否可以像字符串一样/操作/函数
- 从字符串调用javascript函数
- jquery字符串变量上的每个函数
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 将JSON字符串转换为函数参数
- 在Javascript中将字符串转换为函数
- 正在创建使用子字符串解析JSON数据的函数
- 是否可以在 ng-click 中调用函数字符串
- 用于查找函数字符串 javascript 的正则表达式
- Regex js解析函数字符串
- 是传递给函数(字符串或对象)的元素
- 如何在不使用eval()的情况下将完整的函数字符串转换为javascript函数
- javascript函数字符串slice
- 引用函数(字符串)javascript中的数组项
- JS regex从一个函数字符串中提取多行参数