当前位置:编程学习 > JS >>

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,易做图:"男"};
   //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>

补充:web前端 , JavaScript ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,