0

我正在学习 javascript,所以不要杀了我。我正在定义更多不同的命名空间,如下所示:

var name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

进而..

var second_name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

如果我在第一个变量中定义和初始化一个变量,然后我尝试在第二个变量中调用它,例如如果写入c = new name_Class()它,例如重新定义每个数组,[]这样我就无法获得我之前给它的值。你能帮助我吗?

4

2 回答 2

1

我不确定你是否明白你在做什么。

var name_Class = function(){
  this.variable_name_1 = {}

  this.method_name_1 = function() {}
}

定义了一个名为 name_Class 的构造函数(顺便说一句,构造函数的第一个字符应按约定大写)

var c = new name_Class();

使用该构造函数创建一个对象。创建新对象并将构造函数绑定到该对象并调用,设置新对象的 variable_name_1 和 method_name_1 属性 c。每次分配new name_Class()给变量时,它都会创建一个全新的对象,该对象绑定了构造函数。您对为该函数创建的其他对象所做的任何更改都不会影响这个新变量。

所有这些都与您的第二个构造函数完全无关,您可以以相同的方式使用它,并且完全不受第一个构造函数的影响。

这些东西在技术上都不是命名空间,它们是类型命名空间通常是指其他变量被定义为属性的顶级变量。默认情况下,变量是在全局命名空间中定义的,对于浏览器来说就是窗口。

例如,要在命名空间上创建类型为 name_Class 的新对象namespace1,您可以这样做

var namespace1  = {};
namespace1.c = new name_Class();
于 2013-03-14T19:39:44.607 回答
-2

如果您希望在实例上设置值,则可以传入参数。例如

var Swatch = function(){
  this.color = arguments[0] || 'green';
  this.callback = arguments[1] || function() {
     alert(this.color);
  }
  this.callback();
}

//defaults to green if no args are passed
var green = new Swatch();

//or pass in your own values
var red = new Swatch('red',function(){
  alert('New swatch created with color '+this.color);
});
于 2013-03-14T19:46:09.640 回答