<%@ 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>