js基础运用 day4

tool.js

通过prototype属性拓展js API的对象的功能

添加trim方法、reverse方法、toCharArray方法、以及为其shift()、unshift()方法弄个别名,还有写一个println()函数。

function print(str){
	document.write(str);
}

function println(str){
	document.write(str+"<br/>");
}

///////通过prototype属性扩展js API的对象的功能/////////
String.prototype.trim = function(){
	 var start=0;//第一个非空格字符的位置
	 var end=this.length-1;//最后一个非空格字符的位置
	 while(start<=end && this.charAt(start)==' '){
		 start++;
	 }
	 while(start<=end && this.charAt(end)==' '){
		 end--;
	 }
	 return this.substring(start,end+1);
};
//※把trim方法融入到String对象中: str.trim()


//给String对象添加一个toCharArray()方法
String.prototype.toCharArray=function(){
	var chs=[];
	for(var x=0;x<this.length;x++){
		chs[x]=this.chatAt(x);
		
	}
	return chs;
};

//给String对象添加一个reverse()方法
String.prototype.reverse = function(){
	//函数内部可以再定义函数----Java做不到
	function swap(arr,start,end){
		var temp=arr[start];
		arr[start]= arr[end];
		arr[end] = temp;
	}
	
	var arr = this.toCharArray();
	for(var start=0,end=arr.length-1; start<end; start++,end--){
		swap(arr,start,end);
	}
	return arr.join("");
};

String.prototype.compareTo=function(str){
	if(typeof(str)!="string"){
		return 1;
	}
	
	var len1=this.length;
	var len2=str.length;
	var shortLen=len1>len2?len2:len1;
	var longLen=len1>len2?len1:len2;
	for(var i=0; i<shortLen; i++){
		if(this.charAt(i)!=str.charAt(i)){
			return this.charAt(i)-str.charAt(i);
		}
	}
	if(len1>len2){
		return 1;
	}else if(len1<len2){
		return -1;
	}else{
		return 0;
	}
	
};


//为数组对象的shift()和unshift()函数取两个我们习惯的别名
Array.prototype.removeFirst=function(){
	return this.shift();
};

Array.prototype.addFirst=function(e){
	return this.unshift(e);
};

Array.prototype.addLast=function(e){
	return this.push(e);
};

JS语言中的对象----Array对象

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS语言中的对象--Array对象</title>
<script type="text/javascript" src="tools.js"></script>
</head>
<body>
	<script type="text/javascript">
		//js中只有一个容器----Array
		var arr = [ "ccc", "aaa", "ddd", "opq", "bbb" ];
		var arr2 = [ 1, 2, 3, 4, 5 ];
		println(arr);
		println(arr2);
		
		//concat()方法:连接两个或更多的数组,并返回结果。---现场保护方式
	    var newArr = arr.concat(arr2);
	    println(arr);
	    println(newArr);
	    
	    //join()方法:把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
	    println( newArr ); //toString(),相当于join()
	    println( newArr.join() ) ; //空参方法,用“,”作为分隔符
	    println( newArr.join(",") ); 
	    //以上三行功能一样
	    
	    println( newArr.join("-*") ); //自己指定元素之间的分隔符
	    println( newArr.join("") ); //自己指定元素之间的分隔符(这里为"没有分隔符")
	    
	    println("<hr/>");
	    
	    //pop()方法:删除并返回数组的最后一个元素
	    println( arr );
	    var lastE = arr.pop();
	    println(lastE);
	    println( arr );
	    //push()方法:addLast(), 向数组的末尾添加一个或更多元素,并返回新的长度。
	    var len = arr.push("Jack",20,"Male");
	    println( len );
	    println( arr );
	    
	    //reverse(): 颠倒数组中元素的顺序。 ---原地修改
	    arr.reverse();
	    println(arr);
	    
	    //shift(): removeFirst(), 删除并返回数组的第一个元素
	    var firstE = arr.shift();
	    println(firstE);
	    println(arr);
	    
	    //unshift(): addFirst(), 向数组的开头添加一个或更多元素,并返回新的长度。
	    arr.unshift(66);
	    println(arr);
	    arr.addLast(9);
	    arr.addFirst(3.14);
	    println(arr);
	    
	    //slice(): slice(start,end) 参数为负数时是倒数的意思
	    println( arr.slice(2, 4) ); //把[2,4)范围内的元素返回出来,,现场保护方式---该方法并不会修改数组,而是返回一个子数组。
	    println( arr.slice(-4, -2)); // [倒数第4个 , 倒数第2个)
	    println( arr.slice(-3) ); //[倒数第3个,末尾]
	    
	    //sort(): 对数组的元素进行排序,  sort( cmpFun )
	    arr.sort();
	    println(arr);
	    
	    //自定义排序----所有字符串都比数字小,然后字符串与数字自身的比较规则为小的在前
	    arr.sort( function(a,b){
	    	if(typeof(a)=="number"){
	    		if(typeof(b)=="string"){
	    			return 1;
	    		}else if(typeof(b)=="number"){
	    			return a-b;
	    		}
	    	} else if( typeof(a)=="string"){
	    		if(typeof(b)=="number"){
	    			return -1;
	    		}else if(typeof(b)=="string"){
	    			return a.compareTo(b);
	    		}
	    	}
	    	
	    });
	    println(arr); //Jack,aaa,ccc,ddd,opq,3.14,9,20,66
	    
	    //splice()方法: 向/从数组中添加/删除项目,然后返回被删除的项目。
	    var temp = arr.splice(1, 3, "france",2,1,"australia"); //从位置1开始删除3个元素,并在删除位置添加:"france",2,1,"australia"
	    println(temp); //aaa,ccc,ddd
	    println( arr ); //Jack,"france",2,1,"australia",opq,3.14,9,20,66
	    
	    //toSource()方法: 返回对象的源代码
	</script>
</body>
</html>

JS语言中的对象--String高级用法

通过对象的prototype属性可以为它添加变量与方法 ,给原型对象(js已经创建好的String,Array,Date,Number这些),添加变量

或函数之后,所有的克隆体(我们声明与创建的对象)都有了。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JS语言中的对象--String高级用法</title>
<script type="text/javascript" src="tools.js"></script>
</head>
<body>
	<script type="text/javascript">
		//construcor属性
		var str = new String("abc123");
		println(str.constructor); //类似于Java中的instanceof
		if (str.constructor == String) { //Java的写法: str instanceof String
			println("一个String实例");
		}
	</script>

	<h3>prototype属性的引例:为String对象添加一个trim()方法</h3>
	<script type="text/javascript">
		function trim(str) { //去除str两端的空格
			var start = 0;//第一个非空格字符的位置
			var 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 str = "  abc 123a    ";
		alert("--" + str + "--");
		alert("--" + trim(str) + "--");
	</script>

	<script type="text/javascript">
		//通过对象的prototype属性可以为它添加变量与方法 
		/*给原型对象(js已经创建好的String,Array,Date,Number这些)
		              添加变量或函数之后,所有的克隆体(我们声明与创建的对象)都有了。*/

		//1 添加变量
		String.prototype.ab = 100;//类似于在Java的类模板中添加变量
		println("ab:" + "abc".ab);
		String.prototype.x = 3.14;
		println("x:" + "aa".x);

		//2 添加函数
		function aa() {
			alert("1111111....");
		}
		String.prototype.aa = aa; //把一个函数引用赋给原型对象
		"abcd".aa();
		//匿名函数的方式添加
		String.prototype.ff = function() {
			alert("222222222...");
		};
		"abc".ff();
	</script>

	<script type="text/javascript">
		//※把trim方法融入到String对象中: str.trim()---代码已经移植到tools.js中了
		var str2 = "  dddd 123dd    ";
		alert("--" + str2.trim() + "--");

		alert(str2.trim().toCharArray());

		alert(str2.trim().reverse());
	</script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/lx678111/article/details/81236651