打印构造函数变量的名称
Print name of constructor variable
假设我有两个构造函数分配给两个变量:
var example1 = function(argument1){
this.argument1 = argument1;
}
var example2 = function(argument2){
this.argument2 = argument2;
}
和包含两个构造函数的对象的对象数组:
var array1 = new Array();
array1[0] = new example1(example);
array1[1] = new example2(example);
我的问题是,当我从数组中选择一个项目时,我如何打印构造函数变量的名称?
为了简洁明了,这里有一个例子:
console.log(array1[0].argument1)
将打印example。但我不想那样。我想让它打印它所来自的构造函数变量的名称。
console.log(array1[0].constructor.toString());
打印变量的内容,但是效果不理想。
您需要为函数提供一个名称:-
var example1 = function example1(argument1){
this.argument1 = argument1;
}
var array1 = new Array();
array1[0] = new example1({});
console.log(array1[0].constructor.name)
在大多数浏览器中,函数都有名称,但您不使用它。所以,我们不得不求助于黑客在云中找到你的构造函数,这在IE7中不起作用,也许是8:
console.log(Object.keys(self).filter(function(a){
return self[a]===array1[0].constructor;
})[0]);
如果你的代码没有在全局作用域中运行,这个技巧将不起作用!同样,这是一种技巧,你应该找到更好的方法来做事情,比如命名你的函数,即使它们是表达式。
Try instance,
var example1 = function(argument1){
this.argument1 = argument1;
}
var example2 = function(argument2){
this.argument2 = argument2;
}
console.log(getName(array1[0]));
function getName(value) {
if (value instanceof example1) return 'example1';
if (value instanceof example2) return 'example2';
return '';
}
相关文章:
- 构造函数函数闭包变量
- 正在向构造函数添加作用域变量
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 返回变量作为构造函数
- “var”变量,“this”变量和“global”变量 - 在JavaScript构造函数中
- JavaScript 构造函数中的“var”变量会发生什么
- 在 promise 中获取构造函数变量
- 是否需要初始化在 Javascript 中作为“类”构造函数参数传递的变量
- 在实例化期间使用构造函数变量
- 角度表达式无法使用构造函数属性分辨变量类型
- 使用类/构造函数与变量方法时的作用域不同
- 如何在嵌套原型中访问 JavaScript 构造函数变量
- 如何访问构造函数变量
- JavaScript:在构造函数中使用原型函数更改变量
- 从构造函数变量内部调用函数,在 JavaScript 中给出 Undefiend 错误
- 为什么我在构造函数中附加“this”的变量会失去其绑定
- 使用 JavaScript 和构造函数的动态变量名称:使用 EaselJS 将图像动态克隆到多个画布
- 如何使用在构造函数中创建的方法更新同一构造函数中的另一个变量
- Javascript-Prototype没有读取构造函数变量
- Javascript:将构造函数作为变量中的引用传递并调用此构造函数