JAvascript単純オブジェクト作成

3030 ワード

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は根本的に2つのものですが、このコードはよく理解できるはずです.
まず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();

p 1まで実行する.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を指すことを定義すると、関数の呼び出しに成功します.