我想创建一个日志函数,我可以插入这样的变量名称:
var a = '123',
b = 'abc';
log([a, b]);
Run Code Online (Sandbox Code Playgroud)
结果应该在console.log中看起来像这样
a: 123
b: abc
Run Code Online (Sandbox Code Playgroud)
获取变量的值没有问题,但如何获取变量名称?该函数应该是通用的,所以我不能总是假设范围是窗口.
所以参数是变量数组?那么没有,一旦通过这种方式就没有办法得到原始的变量名.在接收端,它们看起来像:
["123","abc"];
Run Code Online (Sandbox Code Playgroud)
仅此而已
你可以为函数提供变量的名称和它们所在的范围,例如:
function log(arr,scope){
for(var i=0;i<arr.length;i++){
console.log(arr[i]+':'scope[arr[i]]);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您也可以给出范围,则会遇到问题.this在某些代码领域存在很多问题:
this是windowthis是undefinedthis是构造对象this是直接封闭对象所以你不能依赖传球this作为范围.除非你能提供范围,否则这是另一个死胡同.
如果将它们作为对象传递,则可以遍历对象及其"键"而不是原始变量名.然而,在这种情况下,这比治疗更具破坏性.
| 归档时间: |
|
| 查看次数: |
12073 次 |
| 最近记录: |