您的位置:首页 > Web前端 > JavaScript

js的关于对象创建的讲解

2012-08-17 07:13 309 查看
<%@ 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: