javascript简单对象创建

由于javascript中定义了一个函数就相当于定义了一个类,我们当然可以创建一个这个类的对象。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

 <head>

  <title> New Document </title>

  <meta name="Generator" content="EditPlus">

  <meta name="Author" content="">

  <meta name="Keywords" content="">

  <meta name="Description" content="">

<script type="text/javascript">

function Person(name,age)

{

	//定义了一个Person属性name

	this.name = name;

	//定义了一个Person属性age

	this.age  = age;

	//定义了一个Person属性address

	this.address = "harbin";

}

//创建了一个对象p1是Person对象

var p1 = new Person("maybe",21);

alert(p1.name+","+p1.address);



var p2 = new Person("gossip",21);

p2.address = "shanghai";

alert(p2.name+","+p2.address);

</script>

 </head>

 <body>

 </body>

</html>

虽然java和javascript根本是两种东西,但这段代码应该很好理解。

首先定义了一个Person类,定义类的属性的方法非常简单,直接用this就可以定义,但是不用this去定义,会出现什么后果呢?我们在类添加一个变量sex,赋值为"male"。

function Person(name,age)

{

	//定义了一个Person属性name

	this.name = name;

	//定义了一个Person属性age

	this.age  = age;

	//定义了一个Person属性address

	this.address = "harbin";



	var sex="male";

}

输出代码如下:

alert(p1.name+","+p1.address+","+p1.sex);


运行结果:

javascript简单对象创建

显示为undefined,未定义的原因是我们并没有用this来定义属性,如果只是简单的定义一个变量,那么它只是一个局部变量,并不是一个类的属性,这一点要弄明白。同理我们在类里随便定义函数,也是不能直接用的,比如:

function Person(name,age)

{

	//定义了一个Person属性name

	this.name = name;

	//定义了一个Person属性age

	this.age  = age;

	//定义了一个Person属性address

	this.address = "harbin";



	var sex="male";



	function say()

	{

		alert("saying");

	}

}


添加代码:

var p1 = new Person("maybe",21);

alert(p1.name+","+p1.address+","+p1.sex);

p1.say();


当运行到p1.say时,会出现错误:

javascript简单对象创建

 

对于变量我们已经解决了,那么方法怎么可以直接通过对象调用呢?

方法很简单。还是利用this:

function Person(name,age)

{

	//定义了一个Person属性name

	this.name = name;

	//定义了一个Person属性age

	this.age  = age;

	//定义了一个Person属性address

	this.address = "harbin";



	var sex="male";



	this.say = function()

	{

		alert("saying");

	}

}


定义一个Person的say属性指向function,这样就能成功调用函数了。

 

 

 


 

你可能感兴趣的:(JavaScript)