首页 > 代码库 > 6.8

6.8

1、数组和函数

concat
将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响。
var arr = ["a","b","c"];
var arr1 = arr.concat("d","e");
//arr1 = ["a","b","c","d","e"]
join
以指定的字符作为分割符,将数组转换为字符串,当指定字符为逗号时,其作用和 toString() 相同。
var str1 = arr.join(",");
//str1 = "a,b,c"
pop
通俗的讲,就是弹出数组的最后一个元素。结合下面的 push 方法,使得将数组作为栈来使用成为可能。pop 方法返回数组最后一个元素的值,并将 length 属性减 1,即返回后立即丢失最后一个元素。
var item1 = arr.pop();
//item1 = "c"
push
将参数添加到数组的结尾。
arr.push("d","e");
alert(arr);
//arr = ["a","b","c","d","e"]
reverse
将数组中的元素反转排列,这个操作是在原有数组上经行操作,同时也返回数组本身。
arr.reverse();
alert(arr);
//arr = ["c"."b","a"]
shift
移去数组的第一个元素,并返回这个元素的值。这个方法的性质和 pop 方法很类似,pop 方法是移去最后一个元素。
var item1 = arr.shift();
//item1 = "a"
unshift
将参数列表插入到数组的开头。其性质和 push 方法类型,但 push 方法是将元素添加到数组的结尾。
arr.unshift("d","e");
alert(arr);
//arr = ["d","e","a","b","c"]
slice
返回数组对象的一个子集,索引从开始(包括开始位置元素),到结束(不包括结束位置元素),
原有数组不受影响。当 开始或者结束为负数时,则使用他们加上数组长度后的值。如果结束小于等
于开始,将返回空数组。
var item1 = arr.slice(1,2);
//item1 = "b"
var item2 = arr.slice(-2,-1);
//item2 = "b"
splice
从数组对象中移除指定长度的元素,并替换为新的元素(相当于执行替换操作)。如果没有指定新
的元素,则相当于执行删除操作。返回被删除元素组成的数组。
var arr1 = arr.splice(1,2,"d","e");
//arr1 = ["b","c"]
alert(arr);//["a","d","e"]
var arr2 = arr.splice(1,2);
//arr2 = ["d","e"]
alert(arr);
//arr = ["a"]
2、二维码的插件是什么
1、首先在页面中加入jquery库文件和qrcode插件。
<script type="text/javascript" src="http://www.mamicode.com/jquery.js"></script>
<script type="text/javascript" src="http://www.mamicode.com/jquery.qrcode.min.js"></script>
2、在页面中需要显示二维码的地方加入以下代码:
<div id="code"></div>
3、调用qrcode插件。
qrcode支持canvas和table两种方式进行图片渲染,默认使用canvas方式,效率最高,当然要浏览器支持html5。
直接调用如下:
$(‘#code‘).qrcode("http://www.helloweba.com"); //任意字符串
您也可以通过以下方式调用:
$("#code").qrcode({
render: "table", //table方式
width: 200, //宽度
height:200, //高度
text: "www.helloweba.com" //任意内容
});
3、禁止鼠标点击的使用方法
平时我们兼容什么东西总是在调整低版本IE的兼容性,但是这回不是因为低版本浏览器不给力。而是因为
火狐给力过头了,完全不顾其它浏览器的感受标新立异了。除了火狐之外,所有的浏览器都可以使用
MouseWheel事件来处理鼠标滚轮的响应。但是火狐却偏偏不支持MouseWheel,而使用无厘头的
DOMMouseScroll,这玩意儿除了火狐以外其它浏览器都不兼容。也就是说,对于鼠标滚轮事件的处理,
火狐只能使用DOMMouseScroll。而非火狐则只能使用MouseWheel。
这两种事件实现的原理不同,他们处理的数据也不同。
<!DOCTYPE html>
<style>
span {font:14px/20px 微软雅黑;}
#counter {
width:50px;height:20px;
border:1px solid #CCC;
background:#F9F9F9;
font:14px/20px Consolas;
text-align:center;
margin:10px;
}
</style>
<span>使用鼠标滚轮调整数值大小</span><br/>
<div id="counter">0</div>
<script>
//判断浏览器
var isIE=navigator.userAgent.match(/MSIE (\d)/i);
isIE=isIE?isIE[1]:undefined;
var isFF=/FireFox/i.test(navigator.userAgent);
//获取元素
var counter=document.getElementById("counter");
//鼠标滚轮事件
if(isIE<9) //传统浏览器使用MouseWheel事件
counter.attachEvent("onmousewheel",function(){
//计算鼠标滚轮滚动的距离
//一格3行,每行40像素,所以除以120
var v=event.wheelDelta/120;
counter.innerHTML=counter.innerHTML*1+v;
//阻止浏览器默认方法
return false;
});
else if(!isFF) //除火狐外的现代浏览器也使用MouseWheel事件
counter.addEventListener("mousewheel",function(e){
//计算鼠标滚轮滚动的距离
var v=e.wheelDelta/120;
counter.innerHTML=counter.innerHTML*1+v;
//阻止浏览器默认方法
e.preventDefault();
},false);
else //奇葩的火狐使用DOMMouseScroll事件
counter.addEventListener("DOMMouseScroll",function(e){
//计算鼠标滚轮滚动的距离
//一格是3行,但是要注意,这里和像素不同的是它是负值
var v=-e.detail/3;
counter.innerHTML=counter.innerHTML*1+v;
//阻止浏览器默认方法
e.preventDefault();
},false);
</script>
4、数组里怎样插入和取出内容
首先定义一个数组 var arr=[2,4,5,3,5,3,0];//这里以整形数组为例
确定数组的长度arr.length;
利用循环语句遍历数组
var arr=[2,4,5,3,5,3,0];
var arrvalue;//用于存放取出的数组的值
for(var i=0;i<arr.length;i++){
arrvalue=http://www.mamicode.com/arr[i];//数组的索引是从0开始的
console.log(arrvalue);//把取出的值打印在控制台上
}
5、递归
程序调用自身的编程技巧称为递归( recursion)递归,就是在运行的过程中调用自己。
递归算法是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
6、函数封装、调用
function getUserInfo(){
$.ajax({
type: "POST",
url: "/user",
dataType: "json",
contentType: "application/json;utf-8",
timeout: 6000,
error: function () { },
success: function (data) {
console.log(data);
}
});
};
7、内置函数
javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数
1.常规函数
javascript常规函数包括以下9个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮。 (2)confirm函数:显示一个确认对话框,包括OK、Cancel按钮。 (3)escape函数:将字符转换成Unicode码。 (4)eval函数:计算表达式的结果。 (5)isNaN函数:测试是(true)否(false)不是一个数字。 (6)parseFloat函数:将字符串转换成符点数字形式。 (7)parseInt函数:将符串转换成整数数字形式(可指定几进制)。 (8)prompt函数:显示一个输入对话框,提示等待用户输入。例如:
<script language="javascript"> <!-- alert("输入错误"); prompt("请输入您的姓名","姓名");
//(标题,预设值) confirm("确定否!"); //--> </script> (9)unescape函数:解码由
escape函数编码的字符。 2.数组函数
javascript数组函数包括以下4个函数: (1)join函数:转换并连接数组中的所有元素为一个字符串。例: function JoinDemo() { var a, b; a = new Array(0,1,2,3,4); b = a.join("-");//分隔符 return(b);//返回的b=="0-1-2-3-4" } (2)langth函数:返回数组的长度。例: function LengthDemo() { var a, l;
执行这个函数, 希望有个回调,例如: 接上上面的函数写
getUserInfo(data,function(data){
console.log(data);
})
8、形参、实参、作用域
def test(a):
a = 20
print("这是在调用函数之时的值: %s"%a)
a = 10
print("这是在调用函数之前的值: %s"%a)
test(a)
print("这是在调用函数之后的值: %s"%a)
运行结果:
这是在调用函数之前的值: 10
这是在调用函数之时的值: 20
这是在调用函数之后的值: 10
结论:当变量重名时函数内部的变量会覆盖外部变量,因此尽量避免重名现象,虽然它能通过语法检查。
9、全局变量
全局变量是编程术语中的一种,源自于变量之分。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部
变量,只能被内部引用,而无法被其它对象或函数引用。
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对
象或函数引用。一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。
10、局部变量
局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局
变量而言的。在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量。面向对象编程是现在普
遍采用的是软件开发方法,因此无需考虑是局部变量还是全局变量,说到变量,往往都是局部变量。
11、原型链
JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype。以上面的例子为例:
console.log(zjh.__proto__ === person.prototype) //true
同样,person.prototype对象也有__proto__属性,它指向创建它的函数对象(Object)的prototype
console.log(person.prototype.__proto__ === Object.prototype) //true
继续,Object.prototype对象也有__proto__属性,但它比较特殊,为null
console.log(Object.prototype.__proto__) //null
12、对象是什么
JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。
属性和方法
属性是与对象相关的值。
方法是能够在对象上执行的动作。
举例:汽车就是现实生活中的对象。
汽车的属性:
car.name=Fiat
car.model=500
car.weight=850kg
car.color=white
汽车的方法:
car.start()
car.drive()

6.8