out.js:
function print(param){ document.write(param); } function println(param){ document.write(param+"<br/>"); }
在with语句块中,可以省去对象名的引用
var dd2 = new date(); with(dd2){//在with语句块中,可以省去对象名“dd2”的引用 var year = getfullyear(); //dd2.getfullyear() var month= getmonth(); //从0开始的月份数 var day = getdate();//返回月份中的第几天 println(year+"年"+month+"月"+day+"日 "); }
一、object对象
<html> <head> <title>object对象的用法演示</title> </head> <body> <script type="text/javascript"> /*tostring()将对象转换成字符串*/ function show(){ alert("show......"); } //alert(show);//默认调用tostring() //alert(show.tolocalestring()); //alert(show.tostring()); var arr=[1,2,3,8]; //alert(arr.tostring()); //alert(arr);//默认调的tostring() /*valueof(): 返回指定对象的原始值 */ //alert(arr.valueof());//结果和tostring()一样 //alert(show.valueof());//结果和tostring()一样 </script> </body> </html>
二、string 对象
1、创建string对象的两种方式
1)var str = new string("abc123"); 2)var str2 = "abcd1234";
2、string对象当中的属性
str.length:字符串长度
3、string对象当中的方法
bold():加粗
fontcolor("red"):设置颜色
link("http://www.hncu.net"):设置为超链接
substring(1, 5):取子串[1,5),java一样,左包含,右不包含
substr(1,5):取子串:从1位置开始,取5个字符
三、date 对象
1、date对象的构造
var date = new date(); println(date); //gmt格式输出 println(date.tolocalestring());//转成本地系统的日期时间格式输出。 println(date.tolocaledatestring()); //只有日期,没有时间
2、从对象中解析出相应的日期元素
//var year = date.getyear();//过时了,尽量不用 。它是返回从1900到当前日期所经过的年份 var year = date.getfullyear(); println(year); var month= date.getmonth(); //从0开始的月份数 println(month); var day1 = date.getday(); //返回星期中的第几天,0为星期天 println(day1); var day2 = date.getdate();//返回月份中的第几天 println(day2);
3、要求显示出某个日期的“星期几”
function getweekday( num ){ var weeks = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; return weeks[num]; } var weekday = getweekday( date.getday() ); println(weekday);
4、日期对象和毫秒值之间的转换
var date2 = new date(); var time = date2.gettime();//日期对象-->毫秒值 println("time:"+time); var date3 = new date(time); println(date3.tolocaledatestring());
5、日期对象和字符串之间进行转换
//日期对象-->字符串:tolocalestring() 和 tolocaledatestring() //字符串-->日期 //var strdate="9/27/15";//细节:如果年份只给两位有效数字,那是代表19**年。如果是2000年以后的年份,要给4位 var strdate="9/27/2015 ";//细节:如果年份只给两位有效数字,那是代表19**年。如果是2000年以后的年份,要给4位 var time = date.parse(strdate);//返回的是毫秒数 var d = new date(time); println(d.tolocalestring());
6、日期解析错误时,抛异常
<script type="text/javascript"> date.prototype.parse2 =function(str){ throw new exception(); }; try{ var strdate2="9/27/2ewewwe15 ";//细节:如果年份只给两位有效数字,那是代表19**年。如果是2000年以后的年份,要给4位 var time2 = date.parse2(strdate2);//返回的是毫秒数 }catch(e){ alert("日期解析错误....我给的提示...."); } </script>
四、math 对象
math.ceil(12.34);//向上进位
math.floor(12.34);//向下进位
math.round(12.54);//四舍五入
math.pow(5,6);//5的6次方
//生成10个[0,10]范围内的随机整数 for (var x=0;x<10;x++){ //var n=math.floor(math.random()*11);//法1 //var n=math.round(math.random()*10);//法2 var n=parseint(math.random()*11);//法3 println(x+": "+n); }
五、global对象
global对象中的方法是全局方法,调用时可以省略global,直接写方法名
1、parseint()中的基数用法----进制转换
1)将指定进制格式的字符串转换成-->10进制数
//var num = parseint("110",10); //110 //var num = parseint("110",2); //6 var num = parseint("0x3c",16); //60
2)10进制转换成--->非10进制
var num2 = new number(6); println( "num2="+ num2.tostring(2) ); var num3 = 60; println( "num3="+ num3.tostring(16) );
2、for(in)语句的用法
1)格式:
for(变量 in 对象){
...//对对象中的元素进行遍历操作
}
<script type="text/javascript"> /* <span style="white-space:pre"> </span>for( 变量名 in 对象 ){ ...//分别对对象中的元素(属性)进行遍历操作 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>*/ <span style="white-space:pre"> </span>//数组对象 <span style="white-space:pre"> </span>var arr=[12,13,22,-1,56,0,9]; <span style="white-space:pre"> </span>for (x in arr){//注意,对于数组,这里的x是下标即是0,1,2,3,... <span style="white-space:pre"> </span>println(x+": "+arr[x]); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>print("<hr/>"); //用for...in语句操作自定义对象 for (x in p2){//x是函数中的成员变量与成员方法的名称 println(x+"------"+p2[x]);// p2[x]就是valeof(x) } </script>
六、自定义对象
对js来描述对象--person
1、方法1:本质上,有点类似于java当中的直接new一个空参对象,然后往里面直接添加变量
<script type="text/javascript"> function person(){ //alert("person..."); println("person..."); } var p = new person(); //要为person对象p添加变量,直接使用:p.对象名=... p.name = "jack"; p.age = 24; //alert(p.name+"---"+p.age); //要为person对象p添加方法,直接使用:p.方法名=... p.show = function(){ println(p.name+"---"+p.age); }; p.show();//调方法 var obj = new object(); obj.name = "god"; obj.age =10000; obj.show = function(){ println(obj.name+"::::"+obj.age); }; obj.show(); </script>
2、方法2:更接近于java当中的面向对象的方式----类的封装
<script type="text/javascript"> //方式2:更接近于java当中的面向对象的方式----类的封装 function person(name,age){ this.name = name; //这里的this.表示给当前对象添加一个变量 this.age = age; this.setname= function(name){ this.name = name; }; this.getname= function(){ return this.name; }; this.show= function(){ return "name:"+this.name+",age:"+this.age; }; } var p = new person("tom",22); println(p.name+"==="+p.age); p.setname("rose"); println(p.show()); for(x in p){ //x为自定义对象当中的变量名 println(x+":"+p[x]); //p[x]为自定义对象当中的变量值(如果是函数,为它的字节码) } </script>
3、方式3: map方式, key:value ----类似于java当中的数据封装,把数据封装到map集合当中
<span style="font-weight: normal;"><script type="text/javascript"> //对象调用成员有两种方式:对象.属性名 和 对象["属性名"] //1) 对象.属性名的方式应该注意: 如果属性名不符合标识符的命名规则,那么不能采用这种方式调用,如下面例子当中的不能采用map[8]的方式 //2) 对象["属性名"]的方式应该注意:如果属性名符合标识符的命名规则,那么访问时属性名应该要加引号,如下面例子当中的map[name]要写成pp["name"]的形式才行 var pp = { //"name":"张三","age":"23", //key:value name:"张三",age:"23", //这句和上面一句等效---key的名称可以省略引号 "getname": function(){ return this.name; } }; println(pp.name+"===" + pp.age); println(pp.getname()); println( pp["name"] ); //用 pp[name]是不行的 //map集合的定义 var map={ 8:"张三" , 3:"李四", 5:"jack" }; var val = map[8];//8是数字,不是变量名,因此引号省略照样能解析出来 println("val:"+val); //var val2 = map.8; //不行,因为8不是变量的形式 //println(val2); </script> </span>
4、map数据封装的进一步扩展
<script type="text/javascript"> //属性值是数组 var mymap = { names:["jack1","jack2","jack4"], ages:[25,22,18] }; //取出jack2的姓名和年龄 println("name:"+ mymap.names[1]); println("age:"+ mymap.ages[1]); var mymap2 = { names:[{name:"jack1"},{name:"jack2"},{name:"jack4"}] }; //取出jack1 println("name:"+ mymap2.names[0].name);//或者println( mymap2.names[0]["name"]); </script>
5、对象的prototype属性
要给对象添加新功能时,直接采用“对象.prototype.新内容”的形式就可以。这内容可以是变量,也可以是函数。
1)为string对象添加一个自定义函数trim:剪去字符串两端的空格
<script type="text/javascript"> function trim(str){ var start, end; start=0; end=str.length-1; while(start<=end && str.charat(start)==' '){ start++; } while(start<=end && str.charat(end)==' '){ end--; } return str.substring(start,end+1); } //测试 var s=" dsk dsds "; //alert("#"+s+"#"); //alert("#"+ trim(s) + "#" ); </script>
2)添加变量
string.prototype.aa = 200; println("abc123".aa);
3)添加函数
string.prototype.trim = trim; println("<hr>"); println("aa3".trim(" abc123 ")); (这里的trim就是上面(1)里面自定义属性中的trim) 注:这里通过“aa3”.trim(" abc123 ")处理的是别的字符串并不是自己
4)通过对象直接调用的函数(注意,一定要把前一版本当中的参数str改成this)
<script type="text/javascript"> string.prototype.trim = function(){ var start, end; start=0; end=this.length-1; while(start<=end && this.charat(start)==' '){ start++; } while(start<=end && this.charat(end)==' '){ end--; } return this.substring(start,end+1); }; println(" aa3 ".trim() ); var str2 =" 76jh dssdds "; println( str2.trim() ); </script> 注:这里是对自己进行处理
6、对象原型修改练习
1)给string对象添加一个tochararray()方法
2)给string对象添加一个reverse方法:将字符串反转
3)js当中,函数内部是可以写函数的,而java是做不到的。但java有内部类
<script type="text/javascript"> string.prototype.tochararray= function(){ var chs=[]; for(var x=0; x<this.length; x++){ chs[x] = this.charat(x); } return chs; }; //给string对象添加一个reverse方法:将字符串反转 string.prototype.reverse=function(){ //js当中,函数内部是可以写函数的,而java是做不到的。但java有内部类 //辅助函数,用于交换数组中的两个元素 function swap(arr,x,y){ var temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } var arr = this.tochararray(); for(var x=0,y=arr.length-1; x<y; x++,y--){ swap(arr,x,y); } return arr.join("-"); }; /* //辅助函数,用于交换数组中的两个元素 function swap(arr,x,y){ var temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } */ //测试 var str = "dsjk2323jkjkewio"; println( str.reverse() ); //测试:在外部能否调用函数reverse内部的swap函数 //测试结果:不行的。其实它和局部变量是一个道理。 //因此,以后在写某个函数内部的辅助功能函数时,最好写在内部 /* var arr =[23,45,7,9]; swap(arr,1,2); println("kkk"); println(arr); */ </script>
以上就是javascript网页编程之------一些常用的对象的内容。
