【发布时间】:2016-06-18 01:33:24
【问题描述】:
我从事网络应用程序的工作已经很长时间了。与最有经验的技术架构师合作。我到处使用带有命名空间的对象表示法中的 javascript。
var web = {};
web.app = {};
web.app.customer = {
name: 'John',
getName: function(){
return 'The name is ' + this.name;
}
};
document.write(web.app.customer.getName());
但是,当我寻找任何面向对象的 javascript 时,我们会提供函数并通过调用其构造函数来创建它的对象。
function Customer(name){
this.name = name;
this.getName = function(){
return 'The name is ' + this.name;
}
}
var cust = new Customer('Bob');
document.write(cust.getName());
我不确定为什么架构师总是建议我使用前一种方法(命名空间)。我从未使用过后一种方法,而后一种是面向对象的 javascript。
- 我们不能有带有命名空间表示法的面向对象的javascript(前一个)吗?如果是这样,您可以创建一个对象并继承它们。
- 为什么我不能在第一种方法(命名空间)中有私有字段?如果我用 var 声明任何字段,则会引发 javascript 错误。
【问题讨论】:
-
前者,如果你有100个客户,你会为每个客户写getName函数吗?
-
@RemcoGerlich - 这就是问题所在。为什么要拥有 100 个客户?我从未使用过这种类型,在 javascript 中创建了 100 个客户对象。你能举个例子,为什么我们要在 javascript 中创建多个对象?
标签: javascript javascript-objects javascript-namespaces