js的關於對象創建的講解

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'js12.jsp' starting page</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!–
 <link rel="stylesheet" type="text/css" href="styles.css">
 –>
 <script type="text/javascript">
   //alert(Math.PI);
   var obj = new Object();
   //alert(obj.username);
   obj.username = "曹歡";//維obj對象增加一個屬性
   //alert(obj.propertyIsEnumerable("username"));
   //alert(obj.username);
   delete obj.username;
   //alert(obj.username);
   //在javascript中可以動態的增加、刪除屬性
  
   //在javascript中常見的定義對象的方法
   var object = {name:"曹歡",age:21,sex:"男"};
   //alert(object.age);
   delete object.age;//刪除對象中的屬性
   //alert(object.age);
   //定義數組的方法
   var arr = new Array();
   arr.push(1);
   arr.push(2);
   arr.push(3);
   //alert(arr.length);
   var  arr1 = [1,2,3];
   //alert(arr1.length);
   //關於數組的排序
   var arr2 = [1,3,24];
   //alert(arr2.sort());//順序是1,24,3//排序是首先將要排序的元素轉化成字符串(原因是數組裡可以放不同類型的數據),然後在按照字符串來排序。
   function compareasd(num, num1)
   {
    var a = parseInt(num);
    var b = parseInt(num1);
    if(a < b)
    {
     return -1;
    }
    else if(a == b)
    {
     return 0;
    }
    else
    {
     return 1;
    }
   }
   //alert(arr2.sort(compareasd))//compareasd是函數名,是對函數名的引用
  
   //匿名函數
   var arr3 = [3, 12,5];
   //alert(arr3);
   /*arr3.sort(function(num, num1)//匿名函數
   {
    var a = parseInt(num);
    var b = parseInt(num1);
    if(a < b)
    {
     return -1;
    }
    else if(a == b)
    {
     return 0;
    }
    else
    {
     return 1;
    }
   });*/
   //alert(arr3);
   //對象的屬性值可以是函數
   /*var fire = {name:"曹歡",age:function()//屬性值可以是你們函數
   {
    num = 1;
    aNum = "caohuan":
   
   }};
   alert(fire.name);
   alert(fire.age);*/
   //javascript中沒有類的說法,隻有對象
   //基於已有對象給對象增加屬性、方法
   var obj2 = new Object();
   obj2.name = "真的嗎?";
   obj2.display = function(name)//這種方式創建對象隻能建立一個對象,如果還要建立一個這樣的對象,還要寫重復的代碼,太麻煩。
   {
    this.name = name;
   }
   //alert(obj2.name);
   obj2.display("不是這樣的");
   //alert(obj2.name);
   //工廠方式建立對象(隻要寫一次代碼,就可以建立無數個)
  
   function createObject()
   {
    var obj = new Object();
    obj.name = "caohuan";
    obj.age = 21;
    obj.init = function(name, age)
    {
     this.name = name;
     this.age = age;
    }
    return obj;
   }
   var o1 = createObject();
   var o2 = createObject();
   alert(o1.name);
   alert(o2.age);
   o1.init("曹歡");
   alert(o1.name);

 

//工廠方式建立對象的改進
  function get()//讓該函數被多個對象所共同擁有,而不是被每隔對象都創建一個,簡潔。
  {
 
   document.write("name:"+this.name+","+"age:"+this.age,"<br/>");
  }
  function createObject(name, age)
  {
   var obj = new Object();
   obj.name = name;
   obj.age = age;
   obj.get = get;
   return obj;
  }
 
  var a = createObject("曹歡",21);
  var b = createObject("caohuan",22);
  //a.get();
  //b.get();
  //構造函數建立對象
  function Person(name, age)
  {
  //在此行代碼之前,js引擎會為我們建立一個對象。@
   //this.name = "曹歡";
   //this.age = 21;
   this.name = name;
   this.age = age;
   this.get = function()
   {
    //alert("name:"+ this.name + " , age:" ,this.age);
    document.write("name:"+ this.name + " , age:" ,this.age);
   }
  //此處有一個隱藏的return語句會把我們建立的對象返回。@
  //註意:要出現@的兩處的情況,隻有用new建立對象的時候才會出現這樣的情況。
  }
  //new Person("曹歡",24).get();
 </script>
  </head>
 
  <body>
   
  </body>
</html>

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *