前端笔记(不定时更新)

1、字符串反转

 //字符串反转
     var str = "abcdefg";
     var result = str.split("").reverse().join("");
	 
     //结果:gfedcba
     alert(result);

2、求数组中的最大值或者最小值

	
	var arr = [0,3,9,2,33];
	
	//不能直接用Math.max(arr);max不支持数组,只支持max(0,3,9,2,33)
	//利用apply即可将arr拆成多个参数,并传递给max,这样就变相的执行了Math.max(0,3,9,2,33);
	var result = Math.max.apply(null,arr);
	
	//结果:33
	alert(result);

3、js 中onload和jquery的ready()区别

//onload是在页面完全载入才会触发,ready则是在DOM结构加载完即可执行
//如在载入一个图片或者视频资源很多的页面时,onload必须在这些图片资源全部下载下来之后才会执行,很容易出现“无响应”,“白屏”,体验非常不好。
//而ready则只要求你所有的DOM(标签)只要加载完了就可以执行,就算此时图片资源还没下载完,照样可以执行


4、apply与call的区别

Function.apply(obj,arr); apply第一个参数将替代Function里的this,而后面的arr将会被拆分出每一个值传递给Function当做参数。

Function.call(obj,param1,param2,param3,.....); call 的obj和apply一样,区别在参数的传递,后面的参数会按顺序传递给Function当做参数。

结论:apply第二个参数只接受数组,如果你有多少个参数,都要先组装成一个数组,再传递进去(通常结合arguments直接传递,即第二个参数直接传arguments).call则是从第二个参数开始是什么样的参数,几个参数,都原封不动的传递给Function。个人觉得call比较好用,而且参数传递比较直观。

看例子加深理解

    //apply方式************************************************************
    //普通的执行函数方式
    var apply_nn = function(a,b){
    	alert(a);   // "a"
  	alert(this);//window object
    };
    var apply_data = {
  		  mm : function(a,b){
  			apply_nn(a,b);
  			//apply_nn.apply(this,arguments);
  		  }
    };
    apply_data.mm("a","b");
    
    //应用了apply执行回调函数方式
    var apply_nn = function(a,b){
    	alert(a);   // "a"
  	 	alert(this);//object object 即apply_data
    };
    var apply_data = {
  		  mm : function(a,b){
  			//apply_nn(a,b);
  			apply_nn.apply(this,arguments);
  		  }
    };
    apply_data.mm("a","b");
    
    
    
    //call方式************************************************************
    //普通的执行回调函数方式
    var call_data = {
  		  mm : function(callback,a,b){
  			  callback(a,b);
  			 // callback.call(this,a,b);
  		  }
     };
    var call_callback = function(a,b){
  	 	alert(this);//window object
    };
    call_data.mm(call_callback,"a","b");
    
    //应用了call执行回调函数方式
    var call_data = {
		  mm : function(callback,a,b){
			 // callback(a,b);
			  callback.call(this,a,b);
		  }
    };
    var call_callback = function(a,b){
		alert(this);//object object 即call_data对象
    };
    call_data.mm(call_callback,"a","b");

5、继承封装方法

/* Extend function. */

function extend(subClass, superClass) {
    //创建一个空F用于转移内存空间
    var F = function() {};
    F.prototype = superClass.prototype;
    subClass.prototype = new F();
    subClass.prototype.constructor = subClass;
}

6、js局部变量

js的作用域是有函数划分的,而不是块儿 

var too="test";
if(true){//这是在块中的定义,此时还是全局变量
     var too="new test";
}
alert(too=="new test");//return true;

7、条件判断的好习惯

//if(a==3) 应该写成if(3==a) 。因为我们常会把==写成1个=,如果把变量写在
//右边时只写了1个=,就会报编译错误,这样就能及时发现错误。



你可能感兴趣的:(js,前端)