如何创建自己的对象:我们从以下三点来讲:
 

1、我们从最简单的例子开始:var myObject=new Object();还有一种等价的方式:var myObject={};无论从哪种方式最终的myObject变量都是Object对象的实例,他作为一个对象的存在外没有任何其他作用。

2、实例化的过程,首先通过new关键字告知JS创建一个全新对象。然后新建的实例被赋值给一个变量,以便你可以通过引用那个变量来访问对象的新实例。不过为了做到这一点所实例化的对象必须是一个构造函数。

3、每个核心对象,例如:Object、Function、Array和String都含有构造函数。

当完成对象实例化之后就不能再基于新实例使用new关键字创建例外的实例了。

var anotherObj=new myObject();

就会报错,说myObject不是构造函数:我们看一下:

 

 
  1. <title>创建自己的对象</title>  
  2. </head>  
  3. <body>  
  4. <script type="text/javascript">  
  5. var myObject={};//new Object();  
  6. alert("");  
  7. </script>  
  8. </body>  

 

我们现在创建了一个myObject对象,那么我们继而创建的话:

 

 
  1. <title>创建自己的对象</title>  
  2. </head>  
  3. <body>  
  4. <script type="text/javascript">  
  5. var myObject={};//new Object();  
  6. var obj=new myObect();  
  7. alert("");  
  8. </script>  
  9. </body>  

 

就会报错。

如何来创建构造函数:

1、Function是创建构造函数的起点。

 

 
  1. <script type="text/javascript">  
  2.     function myConstructor(a){  
  3.     /*某些代码*/  
  4.     }  
  5. </script>  

 

2、上面的代码等价于下面的代码:

 

 
  1. <script type="text/javascript">  
  2.     var myConstructor=new Function('a','/*某些代码*/');  
  3. </script>  

 

3、下面使用new的方式有性能问题所以不推荐使用。

4、Function对象的特别之处在于,它的实例也能作为构造方法,因此可以用来创建函数的新实例。所以可以编写下面的代码:

 

 
  1. <script type="text/javascript">  
  2.     function myConstructor(a){  
  3.     /*某些代码*/  
  4.     }  
  5.     var myObject=new myConstructor();  
  6. </script>  

 

此时,myConstructor函数可以作为构造函数。当对象被实例之后,构造函数会执行包含的代码。
 

 

 
  1. <script type="text/javascript">  
  2. var myObject={};//new Object();  
  3.     function myConstructor(message){  
  4.     /*某些代码*/  
  5.     alert(message);  
  6.     this.myMessage=message;  
  7.     }  
  8.     var myObj=new myConstructor('helo world');  
  9.     alert("");  
  10. </script>  

 

显示的结果为:

在这个例子里边:我们要记住一下2点:

1、this引用的是myObj实例,通过将message参数赋值给this.myMessage使myObj拥有一个可以随时访问的名为myMessage的属性。var message=myObj.myMessage;

2、myMessage属性只在被实例化的myConstructor的实例中可用,而再myConstructor函数自身中是无效的: