最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Javascript_2_动态函数_匿名函数_String对象_原型属性

来源:动视网 责编:小采 时间:2020-11-27 20:26:26
文档

Javascript_2_动态函数_匿名函数_String对象_原型属性

Javascript_2_动态函数_匿名函数_String对象_原型属性:Javascript_2_动态函数_匿名函数_String对象_原型属性<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/
推荐度:
导读Javascript_2_动态函数_匿名函数_String对象_原型属性:Javascript_2_动态函数_匿名函数_String对象_原型属性<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/


Javascript_2_动态函数_匿名函数_String对象_原型属性

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
 <title>javascript演示4</title>
 </head>
 <body>
 <h1>javascript演示4</h1>
 <script type="text/javascript" src="a.js"> </script>
 <script type="text/javascript">
 /*
 * JS函数的其他表现形式:动态函数和匿名函数
 	1,动态函数,使用js内置对象Function对象
 	方法:new Function("参数列表","方法体");
 */
 var add=new Function("x,y","var sum;sum=x+y;return sum;");
 println(add(6,7));//13
 function add2(x,y){
 	var sum;
 	sum=x+y;
 	return sum;
 }
 /*
 * 这两种究竟有何区别?
 * 如果是function 函数名(){}这种写法就写死了!
 * 而,new Function("参数列表","方法体")
 * 参数列表和方法体 都是字符串,未知的,可变化
 * 可以通过字符串动态指定!但很少使用!
 */
 //匿名函数:没有名字的函数 是种简写形式,
 //这个在事件处理时,用得较多!
 var add3=function (x,y){
 	return x+y;
 }
 println(add3(4,6));
 
 function hehe(){
 	println("hehe run");
 }
 var xixi=hehe;//让xixi指向了hehe指向的函数对象
 /*
 * 上面这两段代码就可以简写成下面这一句代码:
 * 即匿名函数
 */
 var xixi=function(){
 	println("hehe run");
 }
 //综合练习1:求数组最大值
 var arr1=[2,4,6,7,133,244,67];
 function getMax(arr){
 	var maxIndex=0;
 	for (var i=0; i < arr.length; i++) {
 if(arr[i]>arr[maxIndex]){
 	maxIndex=i;
 }
 }
 return arr[maxIndex];
 }
 println(getMax(arr1));//244
 //综合练习2:选择排序
 function sortArray(arr){
 	for (var i=0; i < arr.length-1; i++) {
 for (var j=i; j < arr.length; j++) {
 	if (arr[i]>arr[j]) {
 var temp=arr[i];
 arr[i]=arr[j];
 arr[j]=temp;	
 	}
 	}
 }
 }
 println("排序前:"+arr1);
 //排序前:2,4,6,7,133,244,67
 sortArray(arr1);
 println("排序后:"+arr1);
	//排序后:2,4,6,7,67,133,244
	/*
	 * 函数对象被直接打印:字符串代码
	 * 数组对象被直接打印:逗号连接各个数组成员
	 */
	//综合练习3:查找 
	function searchElement(arr,value){
 for (var i=0; i < arr.length; i++) {
 	if(arr[i]==value){
 return i;
 	}
 }
 return -1;
	}
	println(searchElement(arr1,67));
	//折半查找:又称二分查找法(前提必须是有序的)
	function binarySearch(arr,value){
 var min,mid,max;
 min=0;
 max=arr.length-1;
 while(min<=max){
 	mid=(max+min)/2;
 	//也可以写成>>1
 	if (value>arr[mid]) {
 min=mid+1;
 	} 
 	else if (value<arr[mid]) {
 max=mid-1;
 	} 
 	else{
 return mid;
 	};
 }
 return -1;//循环完了还有找到
	}
	println(binarySearch(arr1,67));
	println(binarySearch(arr1,68));
	/*
	 * 综合练习4:对数组进行反转
	 */
	function reverseArray(arr){
 for(var start=0,end=arr.length-1;start<end;start++,end--){
 	swap(arr,start,end);
 }
	}
	function swap(arr,i,j){
 var temp=arr[i];
 arr[i]=arr[j];
 arr[j]=temp;
	}
	 println("反转前:"+arr1);
 reverseArray(arr1);
 println("反转后:"+arr1);
 //反转前:2,4,6,7,67,133,244
	//反转后:244,133,67,7,6,4,2
	/*
	 * JS变量的特点:
	 * 1,只有在函数体内定义的变量是局部变量
	 * function 函数名(){
	 * 	var sum=0;
	 * }
	 */
	function show(){
 var show_sum=1000;//这个是局部变量,函数体外不能使用!
 alert(show_sum);
	}
	/*
	 * 全局变量:在直接在script标签中定义的变量
	 * 在该页面的所有script标签都有效!
	 */
	var test_1="abc";
	for (var i=0; i < 3; i++) {
 println(i);
	}
 </script>
 <script type="text/javascript">
 	println(test_1);//abc
 	println(i);//3 在上一个script标签的for循环里定义的
 	println(arr1);//244,133,67,7,6,4,2
 	for (var i=0; i < 3; i++) {//这不是新定义变量,而是对已有i重新赋值
 }
 /*
 * 下面这个例子将演示形参
 */
 var x=3;
 function show(x){//形参,局部变量 
 	x=8;
 	println("函数里面:"+x);
 }
 show(x);
 println(x);//3
 function show(){
 	println("show run");
 }
 println(show.toString());//相当于alert(show);
 var arr=[2,4,6,7];
 println(arr.toString());//相当于
 println(arr);//相当于
 println(arr.valueOf());
 /*
 * valueOf 方法
返回指定对象的原始值。
object.valueOf( )
必选项 object 参数是任意固有 JScript 对象。 
说明
每个 JScript 固有对象的 valueOf 方法定义不同。
对象 返回值 
Array 数组的元素被转换为字符串,这些字符串由逗号分隔,
连接在一起。其操作与 Array.toString 和 Array.join 方法相同。 
Boolean Boolean 值。 
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。 
Function 函数本身。 
Number 数字值。 
Object 对象本身。这是默认情况。 
String 字符串值。 
Math 和 Error 对象没有 valueOf 方法。 
 * 
 * 
 * toString 方法
返回对象的字符串表示。
objectname.toString([radix])
参数
objectname
必选项。要得到字符串表示的对象。
radix
可选项。指定将数字值转换为字符串时的进制。
说明
toString 方法是所有内建的 JScript 对象的成员。它的操作依赖于对象的类型:
对象 操作 
Array 将 Array 的元素转换为字符串。结果字符串由逗号分隔,且连接起来。 
Boolean 如果 Boolean 值是 true,则返回 “true”。否则,返回 “false”。 
Date 返回日期的文字表示法。 
Error 返回一个包含相关错误消息的字符串。 
Function 返回如下格式的字符串,其中 functionname 
是被调用 toString 方法函数的名称: 
function functionname( ) { [native code] }
Number 返回数字的文字表示。 
String 返回 String 对象的值。 
默认 返回 “[object objectname]”,其中 objectname 是对象类型的名称。
 */
 var abc=function(){
 	println("abc run");
 }
 println(abc);
 println(abc.valueOf());
 println(arr.valueOf());
 //String对象
 var str1=new String("abc");
 var str2="abc";
 println(str1.length);
 println(str1.bold());
 println(str1.fontcolor("red"));
 println(str1.link("http://www.baidu.com"));
 /*
 * 在Java中获取字符串长度是用方法()
 * 而在JS当中,用的是属性!注意区别
 * substr 方法
返回一个从指定位置开始的指定长度的子字符串。
stringvar.substr(start [, length ])
参数
stringvar
必选项。要提取子字符串的字符串文字或 String 对象。
start 必选项。所需的子字符串的起始位置。
字符串中的第一个字符的索引为 0。
length 可选项。在返回的子字符串中应包括的字符个数。
说明
如果 length 为 0 或负数,将返回一个空字符串。
如果没有指定该参数,则子字符串将延续到 stringvar 的最后。
下面的示例演示了substr 方法的用法。
function SubstrDemo(){
 var s, ss; // 声明变量。
 var s = "The rain in Spain falls mainly in the plain.";
 ss = s.substr(12, 5); // 获取子字符串。
 return(ss); // 返回 "Spain"。
}
 * 
 * 
 * substring 方法
返回位于 String 对象中指定位置的子字符串。 
strVariable.substring(start, end)
"String Literal".substring(start, end)
参数
start
指明子字符串的起始位置,该索引从 0 开始起算。
end
指明子字符串的结束位置,该索引从 0 开始起算。
说明
substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。
substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。
例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。 
如果 start 或 end 为 NaN 或者负数,那么将其替换为0。 
子字符串的长度等于 start 和 end 之差的绝对值。
例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 
返回的子字符串的的长度是 3。 
下面的示例演示了 substring 方法的用法。
function SubstringDemo(){
 var ss; // 声明变量。
 var s = "The rain in Spain falls mainly in the plain..";
 ss = s.substring(12, 17); // 取子字符串。
 return(ss); // 返回子字符串。
}
 * 
 * charAt 方法
返回指定索引位置处的字符。
strObj.charAt(index)
参数
strObj
必选项。任意 String 对象或文字。
index
必选项。想得到的字符的基于零的索引。有效值是 0 与字符串长度减 1 之间的值。
说明
charAt 方法返回一个字符值,该字符位于指定索引位置。
字符串中的第一个字符的索引为 0,第二个的索引为 1,
等等。超出有效范围的索引值返回空字符串。
示例
下面的示例说明了 charAt 方法的用法:

function charAtTest(n){
 var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 初始化变量。
 var s; // 声名变量。
 s = str.charAt(n - 1); // 从索引为n – 1的位置处
 // 获取正确的字符。
 return(s); //返回字符。
}
 * 
 */
 var str="abcde";
 println(str.substr(1,3));//从下标为1开始取3个长度:bde
 println(str.substring(1,3));//开始为1,结束为3,长度为2: bc
 /*
 * 练习1:自定义方法,去除字符串两端的空格
 * 两个指针,一个从头找空格,一个从尾找空格,再取长度
 * 同时提防 字符串全是空格的情况 
 */
 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);//关键!!!
 }
 str=" a bc ";
 println("-"+trim(str)+"-");
 /*
 * prototype 属性
返回对象类型原型的引用。
objectName.prototype
objectName 参数是对象的名称。 
说明
用 prototype 属性提供对象的类的一组基本功能。 
对象的新实例“继承”赋予该对象原型的操作。 
例如,要为 Array 对象添加返回数组中最大元素值的方法。
 要完成这一点,声明该函数,将它加入 Array.prototype, 并使用它。 
function array_max( ){
 var i, max = this[0];
 for (i = 1; i < this.length; i++)
 {
 if (max < this[i])
 max = this[i];
 }
 return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );
该代码执行后,y 保存数组 x 中的最大值,或说 6。
所有 JScript 固有对象都有只读的 prototype 属性。
可以象该例中那样为原型添加功能,但该对象不能被赋予不同的原型。
然而,用户定义的对象可以被赋给新的原型。
本语言参考中每个内部对象的方法和属性列表
指出哪些是对象原型的部分,哪些不是。 
 */
 //prototype属性,需求:将trim功能添加到String对象里面去
 //第1种方法;先定义好函数,再指向引用,即函数名
 //函数没参数,函数体使用this
 //第2种方法:使用匿名函数
 function trim2(){
 	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);//关键!!!
 }
 String.prototype.trim=trim2;
 str1=" a bc ";
 println("-"+str1.trim()+"-");
 //第2种演示:
 String.prototype.trim1=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);//关键!!!
 }
 str2=" ab bc ";
 println("-"+str2.trim1()+"-");
 String.prototype.len=199;
 println("abc".len);
 //原型练习1:将字符串变成字符数组
 String.prototype.toCharArray=function(){
 	var chs=[];
 	for (var i=0; i < this.length; i++) {
 chs[i]=this.charAt(i);
 	}
 	return chs;
 }
 str3="a ab bcd z";
 println(str3);
 println(str3.toCharArray());
 //原型练习2:将字符串反转
 String.prototype.reverse=function(){
 	var arr=this.toCharArray();
 	for (var start=0,end=arr.length-1; start <end; start++,end--) {
 	 swap(arr,start,end);
 	}
 	return arr.join();
 }
 str4="a ab bcd z";
 println(str4);
 println(str4.reverse());
 /*
 * Java不允许在函数里面还有函数
 * 但是,JS却可以,因为函数是封装体,是对象,相当于内部类
 */
 </script>
 </body>
</html>

文档

Javascript_2_动态函数_匿名函数_String对象_原型属性

Javascript_2_动态函数_匿名函数_String对象_原型属性:Javascript_2_动态函数_匿名函数_String对象_原型属性<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/
推荐度:
标签: 动态 js 对象
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top