JavaScript中创建对象的3中方式

JavaScript对象是一个特殊的数据结构,JavaScript对象只是一种特殊的关联数组,创建对象并不是总需要先创建类,与纯粹的面向对象语言不同的是,JavaScript中创建对象可以不使用任何类,JavaScript中创建对象的3种方式如下:

  1. 使用new关键字调用构造器创建对象
  2. 使用Object类创建对象
  3. 使用JSON语法创建对象

下面我们先通过代码展示第一种创建对象的方法:

JavaScript中的所有的函数都可以作为构造器使用,使用new调用函数后总可以返回一个对象。

       <script type="text/javascript">
			//定义一个函数,同时也定义可以Person类
			function Person(name ,age){
				this.name = name ;
				this.age = age ;
			}
			var p1 = new Person();
			var p2 = new Person('百度',22);
			document.writeln('p1的属性如下:' +p1.name + '  '+p1.age +"<br/>");
			document.writeln('p2的属性如下:' +p2.name +'  '+p2.age +"<br/>");
		</script>
结果:
p1的属性如下:undefined undefined
p2的属性如下:百度 22

解析:上面的代码定义了一个Person类,其中有两个成员变量。然后创建了两个对象p1和p2,分别用空的构造器和有两个参数的构造器构造对象,然后输出对象的变量值,由于p1调用的是空的构造函数,所以它输出的结果是undefined。

使用Object直接创建对象

JavaScript的对象都是Object的子类,因此可以采用如下方法创建对象:

Var myObj = new Object( );

这是空对象,该对象不包含任何的属性和方法,与Java 不同的是,JavaScript是动态语言,因此它可以动态的为该属性增加属性和方法。

       <script type="text/javascript">
			
			var myObj = new Object();
			myObj.name = 'baidu';
			myObj.age = 22;
			function abc(){
				document.writeln('对象的name属性:' + this.name);
				document.writeln("<br/>");
				document.writeln('对象的age属性: ' + this.age);
			};
			myObj.info = abc;
			myObj.info();
			
		</script>
结果:
对象的name属性:baidu 
对象的age属性: 22

为对象添加方法时,不要在函数的后面添加括号。一旦添加了括号,将表示要把函数的返回值赋给对象的属性。

使用JSON 语法创建对象

JSON语法提供了一种更简单的方式创建对象,使用JSON语法可以避免书写函数,也可以避免使用new关键字,可以直接创建一个JavaScript对象。为了创建JavaScript对象,可以使用花括号,然后写成“key:value”对的形式。

        <script type="text/javascript">
			function Person(name ,sex){
				
				this.name = name;
				this.sex = sex;
			}
			var p = new Person('baidu','male');
			
			var p ={
				
				name:baidu,
				grader:'male'
			};
			alert(p);
		</script>

上面的方式是之前介绍的第一种使用new关键字创建对象的方法,下面的则是使用JSON语法创建对象的格式,显然这种方式显得更加的清晰,简便。在JSON语法中,对象的每个属性名和属性值之间以英文冒号(:)隔开,多个属性值之间使用逗号隔开,最后一个属性不用添加逗号,定义完对象之后要在花括号的结尾添加分号。

使用JSON语法创建对象时,属性值不仅仅可以是普通的字符串,也可以是任何基本数据类型,还可以是函数,数组,甚至是使用JSON定义的另外一个对象,这些都是允许的。JSON语法创建JavaScript对象的方式已经成为主流的方式,推荐大家使用这种方式。

 

     

猜你喜欢

转载自blog.csdn.net/IBLiplus/article/details/81079275