在prototype中定义的方法中获取变量名
JavaScript: Get variable name in method defined in prototype
如何在方法中获得变量名称,我在String()的原型中定义?
String.prototype.foobar = function() {alert(/*something here...*/);};
var s="I'm just a stupid string!";
s.foobar();
应该返回一个包含"s"的警告…
我该怎么做呢?
致意。编辑:
你可以在这里下载这个主题的结果:https://github.com/ninov/onChange
"我想创建一种自定义事件,它检查字符串是否更改"
这是不可能的。字符串是不可变的。
如果您想让函数提醒实际的变量名,那也是不可能的。如果您有一个String对象,则可以有多个变量引用同一个对象。它怎么知道该用哪个名字呢?
你应该定义一个做你想做的事情的对象。最好使用setter和getter。
要确保您得到引用字符串的变量更改的通知,您可以这样做:
var str_obj = (function() {
var s = "my string";
return {
getString: function() {
return s;
},
setString: function( new_s ) {
s = new_s;
alert("s changed!");
}
};
})();
alert( str_obj.getString() ); // alerts "my string"
str_obj.setString( "new string" ); // alerts "s changed!"
alert( str_obj.getString() ); // alerts "new string"
Javascript有字符串原语(不是真正的Javascript对象)和具有方法的字符串对象。我假设字符串原语更有效,并且像您这样静态声明的字符串将默认为原语。在大多数情况下,Javascript会在需要时自动将原语转换为对象。当我在Chrome中运行你的代码时,它会这样做,并且我确实得到一个警告。
如果你想确保它是一个对象,你可以这样声明它:
String.prototype.foobar = function() {alert("fun");};
var s = new String("I'm just a stupid string!");
s.foobar();
有关此主题的更多信息,请参阅此处的"字符串原语和字符串对象的区别"一节。
如果你想做的是从foobar()方法中获取变量名,那么这不是Javascript以任何标准方式支持的东西。
如果这两个都不是你真正想问的,请澄清你的问题。
好吧,这是有效的。
如果您将该代码段更改为:
String.prototype.foobar = function() {alert(this);};
则s.foobar();
将警告"I'm just a stupid string!"
恐怕没有办法得到原来的变量名
这不可能。也不应该是这样。
如果你真的想知道这个元数据,你应该考虑使用一个对象:
var obj = {
s: "I'm just a stupid string!"
};
for(var x in obj){
alert(x + '=' + obj[x]); // logs: s=I'm just a stupid string!
}
但是为什么要通过编程的方式知道变量名呢?
- AngularJS-在JSON选择器中使用变量名
- Javascript:无法获取变量中的单选按钮值
- 活动选项卡's源代码-获取变量s值
- 命令行中的Uglify js;不要弄乱变量名
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 这在JavaScript中是一个好的变量名吗
- 使用nodejs从url中获取变量
- Handlebars帮助程序未获取变量的值
- 通过Ajax获取变量
- for 循环和 if 语句,获取变量并存储它
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- 在Javascript中连接一个动态变量名
- 从javascript表达式(Rhino)中获取变量
- jquery没有't从DIV数据id中获取PHP变量值,只输出变量名
- 在jquery中使用增量变量名从json中获取值
- 在prototype中定义的方法中获取变量名
- 是否可以通过使用函数内部声明的变量来获取函数名?
- 如何在函数中通过变量名获取元素
- 使用data-toggle获取变量名,并在函数中使用该变量名
- 根据变量名获取局部变量的值