Javascript面向對象
//Coder:Zhang Liang
var student1= {
"name":"zhang liang" ,
"age":18 ,
"course":["Math","English" ]
}
//show each property
document.writeln(student1.age);
document.write("<br/>" );
//another display property
document.writeln(student1["age" ]);
document.write("<br/>" );
//add a new property
student1.classmate="Yu Gang" ;
document.writeln(student1.classmate);
document.write("<br/>" );
//get the every propery in object
for(var property in student1)
{
document.write(property+"==>"+ student1[property]);
document.write("<br/>" );
}
//function is also object
var Teacher= function(name)
{
document.writeln("this is my name: "+ name);
document.write("<br/>" );
}
Teacher("Zhang Liang" );
//add a property to function
Teacher.age=38 ;
document.writeln("my age is "+ Teacher.age);
document.write("<br/>" );
//function can be used as a parameter
var Write= function(str)
{
document.writeln(str);
document.write("<br/>" );
}
var ShowName= function(name,func)
{
func(name);
}
ShowName("Huang Hua Xian" ,Write);
//functions as return values
var Plus= function()
{
return function(left,right)
{
return left+ right;
}
}
var GetSum= Plus();
Write(GetSum(7,8 ));
//functions stored as array elements
var array= [];
array[0]= Write;
array[1]="Huang Shu Fang" ;
array[0](array[1 ]);
// there isn't concept "Class" in javascript,only for Construtor
//when there is a this property in function,the function is a Construtor
var Dog= function(name)
{
this.name= name;
this.responseTo=Write("Hello,"+this .name);
}
// var Kitty=new Dog("Kitty");
// Kitty.responseTo();
//static property and function
var Employee= function(name)
{
this.name= name;
}
Employee.Prompt= function()
{
alert("Yes,you are ok!" );
}
Employee.Count=0;//static property
Employee.Prompt();
alert(Employee.Count);
//private property
var Master= function(name)
{
var _name=name;//_name is a private property
this.Name= _name;
}
var Terry=new Master("Terry" );
Write(Terry.Name);
//toString
var Pet= function(firstName,secondName)
{
this.firstName= firstName;
this.secondName= secondName;
}
Pet.prototype.toString = function()
{
return this.firstName+" "+this .secondName;
}
var me=new Pet("Terry","Joen" );
Write(me);
// inherit
//JavaScript 中的函數是對象。每個函數對象都有一個名為 call 的方法,它将函數作為第一個參數的方法進行調用。就是說,作為函數第一個參數傳遞給 call 的任何對象都将在函數調用中成為“this”的值。
var Cat= function(firstName,secondName,age)
{
Pet.call(this,firstName,secondName);//think Dog : base(name)
this.age= age;
}
Cat.prototype=new Pet();// this makes Cat.prototype inherits from Pet.prototype
// remember that Pet.prototype.constructor points to Pet. We want our Dog instances'constructor to point to Cat.
Cat.prototype.constructor= Cat;
//overide toString()
Cat.prototype.toString= function()
{
return this.firstName+" "+this.secondName+"_"+this .age;
}
var cat=new Cat("MiMi",".T",18 );
Write(cat);
//namespace
var System= {};
System.IO= {};
System.IO.Console= function(name){};
System.IO.Console.prototype.Write= function(str)
{
document.write(str);
document.write("<br/>" );
}
var console=new System.IO.Console();
console.Write("Hello,Zhang Liang!" );