我了解到在 JavaScript 中创建对象的一种方式(工厂函数)如下:
var newPerson=function(name){
var result = new Object();
result.name = name;
result.getName = function(){
return this.name;
};
return result;
};
var personOne = newPerson("Diego");
var personTwo = newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo
好吧,我发现某个地方可以创建一个函数,如下所示:
var hello = new Function('alert("Hello, World!");');
那么,如果对象以相同的方式声明,我怎么能从函数中知道对象呢?
最佳答案
如果有帮助,行
var hello = new Function('alert("Hello, World!");');
本质上与
相同var hello = function() { alert("Hello, World!"); };
...除了绑定(bind)方面的一些复杂情况。实际上,几乎没有任何理由使用 new Function(...)
。
您可以使用几个选项来判断您正在处理的对象类型:
typeof
提供了相当粗略的指示(在本例中,“object”
与“function”
)。Object.prototype.toString.call(whatever)
为您提供更多信息(对于规范定义的对象)为您提供字符串,例如[object Object]
或[对象函数]
或[对象数组]
。
更多内容在我的博文中 Say what?它处理弄清楚 JavaScript 中的内容(以及为什么您实际上很少需要这样做)。
关于javascript - 如何区分工厂对象和函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923001/