每日分享

一、数组和函数

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 属性减 ,即返回后立即丢失最后一个元素。

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"]
二、二维码的插件是什么
1、首先在页面中加入jquery库文件和qrcode插件。
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="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" //任意内容 
});

 

三、js禁止鼠标点击的方法

禁用键盘按键,是通过document.onkeydown事件;

禁用鼠标单击,是通过document.onmousedown事件;


[javascript] view plain copy print?
function EventOper(){  
    if(event.keyCode==8){  
        event.keyCode=0;  
        event.returnValue=false;  
        alert("不允许使用退格键");  
    }  
    if(event.keyCode==13){  
        event.keyCode=0;  
        event.returnValue=false;  
        alert("不允许使用回车键");  
    }  
    if(event.keyCode==116){  
        event.keyCode=0;  
        event.returnValue=false;  
        alert("不允许使用F5键");  
    }  
    if(event.ctrlKey){        
        event.returnValue=false;  
        alert("不允许使用CTRL键");  
    }  
  
    if((event.altKey)&&(event.keyCode==78)){          
        event.returnValue=false;  
        alert("不允许使用ALT+N键");  
    }  
    if((event.shiftKey)&&(event.keyCode==78)){        
        event.returnValue=false;  
        alert("不允许使用SHIFT+N键");  
    }  
      
      
}  
  
function rightKey(){  
    if(event.button==2){  
        event.returnValue=false;  
        alert("禁用鼠标右键");  
    }  
}  
document.onkeydown=EventOper;  
document.onmousedown=rightKey;  

四、数组里怎样插入和取出内容

首先定义一个数组 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=arr[i];//数组的索引是从0开始的
console.log(arrvalue);//把取出的值打印在控制台上
}

五、递归

程序调用自身的编程技巧称为递归( recursion)递归,就是在运行的过程中调用自己。
递归算法是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

六、函数封装、调用

常见封装

function Person (name,age,sex){
    this.name = name;
    this.age = age;
    this.sex = sex;
}
 
Pserson.prototype = {
    constructor:Person,
    sayHello:function(){
        console.log('hello');
    }
}

调用

1:方法调用模式。

请注意this此时指向myobject。

/*方法调用模式*/
    var myobject={
            value:0,
            inc:function(){
                    alert(this.value)
                }
        }
    myobject.inc()

 

2:函数调用模式

请注意this此时指向window

/*函数调用模式*/
    
    var add=function(a,b){
        alert(this)//this被绑顶到window
            return a+b;
        }
    var sum=add(3,4);
    alert(sum)

 

3:构造器调用模式

javascript语言精粹一书建议摒弃这中方式。因为有更好的方式。这里先不介绍。下次发表博文的时候贴出来。

会在这里加一个连接。

/*构造器调用模式  摒弃*/
    
    var quo=function(string){
            this.status=string;
        }
    quo.prototype.get_status=function(){
            return this.status;
        }
    var qq=new quo("aaa");
    alert(qq.get_status());

 

4:apply调用模式

==我们可以来看一个更有用的apply实例。看最下面的代码。

 

/*apply*/
    //注意使用了上面的sum函数
    //与myobject
    //这中调用方式的优点在于可以指向this指向的对象。
    //apply的第一个参数就是this指针要指向的对象
    var arr=[10,20];
    var sum=add.apply(myobject,arr);
    alert(sum);

 

看这个apply真正应用。bind这是一个绑定时间的函数

var bind=function(object,type,fn){
  if(object.attachEvent){//IE浏览器
    object.attachEvent("on"+type,(function(){
      return function(event){
          window.event.cancelBubble=true;//停止时间冒泡
          object.attachEvent=[fn.apply(object)];//----这里我要讲的是这里
           //在IE里用attachEvent添加一个时间绑定以后。
           //this的指向不是到object对象本身所以。我们绑定的function里的this.id是无法正常工作的。
           //但是如果我们用fn.apply(object)
           //这里可以看出我们是把apply的第一个对象也就是this的指向变更给了object所以this.id就变成了
           //object.id 可以正常工作了。
                                                               
          }
   })(object),false);
   }else if(object.addEventListener){//其他浏览器
        object.addEventListener(type,function(event){
            event.stopPropagation();//停止时间冒泡
                fn.apply(this)
            });
       }
            
   }
    bind(document.getElementById("aaa"),"click",function(){alert(this.id)}); 

七、内置函数

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函数编码的字符。

八、形参、实参、作用域

形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。
实参:可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
实参和形参的区别:
空白或占位符
1。函数的形参列于函数声明中,在函数定义的函数体内使用。当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。
用来填充形参
2。实参是用来填充形参的。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。
传值调用和引用调用
3。传值调用和引用调用指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

九、全局变量

全局变量是编程术语中的一种,源自于变量之分。

变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。一个局部变量在被其它对象引用时,会是一个空值。但全局变量却不会出现这种情况。

十、局部变量

局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。在C++、C#、Ruby这些面向对象语言中,一般只使用局部变量。面向对象编程是现在普遍采用的是软件开发方法,因此无需考虑是局部变量还是全局变量,说到变量,往往都是局部变量。

十一、原型链

当从一个对象那里调取属性或方法时,如果该对象自身不存在这样的属性或方法,就会去自己关联的prototype对象那里寻找,如果prototype没有,就会去prototype关联的前辈prototype那里寻找,如果再没有则继续查找Prototype.Prototype引用的对象,依次类推,直到Prototype.….Prototype为undefined(Object的Prototype就是undefined)从而形成了所谓的“原型链”。

十二、对象是什么

js对象是属性的集合
方法(Function) 数组(Array)对象(Object)都是对象
对象都是由函数产生的,只是我们平时看到的这种写法
var obj = {"a":"aaa","b":"bbb"}
这种其实是一种语法糖,其实等价于 var obj = new Object();obj.a="aaa".obj.b="bbb";

 
posted on 2017-06-08 23:44  Iamgod`  阅读(114)  评论(0编辑  收藏  举报