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