javascript - 如何区分工厂对象和函数?

标签 javascript

我了解到在 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/

相关文章:

javascript - 电子邮件地址是来自 Meteor JS 中的事件监控 API 的无效响应

css - 如何将滚动条更改为自定义设计? (避免使用默认浏览器外观)

javascript - 如何使用 JavaScript 格式化 JSON 数据

javascript - 如何将变量从angularJS插入到jade模板(node.js)中的字符串

javascript - 简单的待办事项列表 : Issue on adding "None" when list is empty, 或在添加至少一项时将其删除。更好的解决方案是什么?

javascript - 如果没有用户生成的内容,网站是否可以免受 XSS 攻击?

javascript - jquery ui 可排序 - 没有悬停事件

javascript - Model.create() 上未返回 Sails.js ID

javascript - 使用 d3.legend 进行强制布局上的交互式图例

javascript - MongoDB 脚本