zoukankan      html  css  js  c++  java
  • js学习笔记1

    就是调用对象是一个Array,对Array类型增加了一个原型写法的函数,一般写一些扩展时经常用。比如判断一个元素是否在数组中之类的

    Array.prototype.inArray=function(value){
        for(var i=0;i<this.length;i++){
            if (this[i] == value){
               return true;
            }
        }
        return false
    };
     
     
    var arr=["1","2","3"];
    //以下同调用方式,在inArray函数中,使用this即可得到arr
    arr.inArray("1");
     
     

    Array.prototype.inArray=function(value){
        for(var i=0;i<this.length;i++){
            if (this[i] == value){
               return true;
            }
        }
        return false
    };
    var arr=["1","2","3"];
    //以下同调用方式,在inArray函数中,使用this即可得到arr
    arr.inArray("1");

    js数组去重的三种常用方法总结

    第一种是比较常规的方法

    思路:

    1.构建一个新的数组存放结果

    2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比

    3.若结果数组中没有该元素,则存到结果数组中

    复制代码代码如下:
    [this[0]];
    如果是数组的话它是指this的第一个元素。
    Array.prototype.unique1 = function(){
     var res = [this[0]];
     for(var i = 1; i < this.length; i++){
      var repeat = false;
      for(var j = 0; j < res.length; j++){
       if(this[i] == res[j]){
        repeat = true;
        break;
       }
      }
      if(!repeat){
       res.push(this[i]);
      }
     }
     return res;
    }
    var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
    alert(arr.unique1());

    console:

    var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
    undefined
    var res = [arr[0]];
    undefined
    res
    [1]

    var pattern = /aaaa/,
    str = 'aaaa';
    console.log(pattern.test(str));
    VM1599:3 true
    undefined


    第二种方法比上面的方法效率要高

    思路:

    1.先将原数组进行排序

    2.检查原数组中的第i个元素 与 结果数组中的最后一个元素是否相同,因为已经排序,所以重复元素会在相邻位置

    3.如果不相同,则将该元素存入结果数组中

    复制代码代码如下:

    Array.prototype.unique2 = function(){
     this.sort(); //先排序
     var res = [this[0]];
     for(var i = 1; i < this.length; i++){
      if(this[i] !== res[res.length - 1]){
       res.push(this[i]);
      }
     }
     return res;
    }
    var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
    alert(arr.unique2());


    第二种方法也会有一定的局限性,因为在去重前进行了排序,所以最后返回的去重结果也是排序后的。如果要求不改变数组的顺序去重,那这种方法便不可取了。

    第三种方法(推荐使用)

    思路:

    1.创建一个新的数组存放结果

    2.创建一个空对象

    3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

    说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

    复制代码代码如下:

    Array.prototype.unique3 = function(){
     var res = [];
     var json = {};
     for(var i = 0; i < this.length; i++){
      if(!json[this[i]]){
       res.push(this[i]);
       json[this[i]] = 1;
      }
     }
     return res;
    }

    var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
    alert(arr.unique3());

    JS使用正则表达式除去字符串中重复字符的方法

    <script language="javascript">
     str = "Google"
     str1 = str.replace(/(.).*1/g,"$1")
     document.write(str + "<br>");
     document.write(str1);
    </script>
     

    prototype(JS对象)

    在JavaScript中,prototype对象是实现面向对象的一个重要机制。
    每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。
    在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
    1、该对象被类所引用,只有函数对象才可引用;
    2、在new实例化后,其成员被实例化,实例对象方可调用。
    同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。
    http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html
     
    最初对js中 object.constructor 的认识:
    http://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930548.html
     

    js 自带的 map() 方法

    http://www.cnblogs.com/lengyuehuahun/p/5642807.html

    http://www.cnblogs.com/rocky-fang/p/5756733.html

    JS正则表达式

    JavaScript RegExp 对象

    RegExp 对象

    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

    RegExp 对象属性

    属性描述FFIE
    global RegExp 对象是否具有标志 g。 1 4
    ignoreCase RegExp 对象是否具有标志 i。 1 4
    lastIndex 一个整数,标示开始下一次匹配的字符位置。 1 4
    multiline RegExp 对象是否具有标志 m。 1 4
    source 正则表达式的源文本。 1 4

    RegExp 对象方法

    方法描述FFIE
    compile 编译正则表达式。 1 4
    exec 检索字符串中指定的值。返回找到的值,并确定其位置。 1 4
    test 检索字符串中指定的值。返回 true 或 false。 1 4

    支持正则表达式的 String 对象的方法

    方法描述FFIE
    search 检索与正则表达式相匹配的值。 1 4
    match 找到一个或多个正则表达式的匹配。 1 4
    replace 替换与正则表达式匹配的子串。 1 4
    split 把字符串分割为字符串数组。 1 4

    JS正则表达式基本用法(经典全)

    http://www.jb51.net/article/72346.htm

    function Click(){
    if (event.button!=1){
    alert('版权所有(C)2001 XXX工作室');
    }}
    document.onmousedown=Click;

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键,其实是禁止快捷菜单,因为不光右键可以弹出这个菜单,键盘上空格键右边的windows键也可以激活这个快捷菜单 
    <table border oncontextmenu=return(false)><td>no</table> 可用于Table 
    2. <body onselectstart="return false"> 禁止选取、防止复制 
    3. onpaste="return false" 禁止粘贴 
    4. oncopy="return false;" oncut="return false;" 禁止复制和剪切
    5. <input style="ime-mode:disabled"> 关闭输入法

    用javascript 禁止右键,禁止复制,禁止粘贴

     
    用javascript 禁止右键,禁止复制,禁止粘贴
    2007-03-01 18:36

    有时自己辛苦半天做的网页,尤其是一些JavaScript特效,很容易被人利用查看源文件而复制。那么如何才能防止被人查看源代码呢?我们可以利用event.button特性来做到。下表是event.button属性的可能取值及含义:
    0 没按键
    1 按左键
    2 按右键
    3 按左和右键
    4 按中间键
    5 按左和中间键
    6 按右和中间键
    7 按所有的键
    参照上表,我们可以在<body>和</body>之间加入如下语句:
    <Script Langvage=javascript>
    function Click(){
    if (event.button!=1){alert('版权所有(C)2001 XXX工作室');
    }}
    document.onmousedown=Click;
    </Script>
    这样在浏览网页时除单击鼠标左键外,其他任何形式的鼠标点击或组合点击,都将出现“版权所有(C)2001 XXX工作室”的提示框,而不是出现快捷菜单,从而避免被人查看源文件代码。
    如果使event.button=2,实际上它仅能限制点击鼠标右键情况,其他点击方式,如按左右键、按左和中间键、按中间键等就不能限制,当这些方式的点击发生时,出现的就是快捷菜单,从而可以查看源文件。     

    注意:把body改为如下代码:<body oncontextmenu="window.event.returnValue=false">,其中Value中的V一定要大写!!

    页面禁用鼠标右键代码

    可以把下面代码加入到页面适当位置。
    LeadBBS论坛应用下面代码时,可以打开:inc/Board_Popfun.asp文件
    查找:
    <script language = "JavaScript" src = "<%=DEF_BBS_HomeUrl%>inc/JF.js" type="text/javascript"></script>
    下面加入代码。

    <script language=javascript>
    function openScript(url, width, height,left,top,r){
          var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',left=' +left+ ',top='+top+',resizable=no,scrollbars='+r+',menubar=no,status=no' );
    }

    //以下为禁止鼠标右键的代码,不想禁止的可以删除
    <!--

    if (window.Event) 
    document.captureEvents(Event.MOUSEUP);

    function nocontextmenu() 
    {
    event.cancelBubble = true
    event.returnValue = false;

    return false;
    }

    function norightclick(e) 
    {
    if (window.Event) 
    {
    if (e.which == 2 || e.which == 3)
    return false;
    }
    else
    {if (event.button == 2 || event.button == 3) {alert("【E路极速】欢迎你"); } }
    {
    event.cancelBubble = true
    event.returnValue = false;
    return false;
    }

    }

    document.oncontextmenu = nocontextmenu; // for IE5+
    document.onmousedown = norightclick; // for all others
    //-->
    </script>

    图片禁用鼠标右键代码

    应用方法同上。

    <script language="JavaScript1.2">
    var clickmessage="本站图片禁用右键!"
    function disableclick(e) {
    if (document.all) {
    if (event.button==2||event.button==3) {
    if (event.srcElement.tagName=="IMG"){
    alert(clickmessage);
    return false;
    }
    }
    }
    if (document.layers) {
    if (e.which == 3) {
    alert(clickmessage);
    return false;
    }
    }
    }

    function associateimages(){
    for(i=0;i<document.images.length;i++)
    document.images[i].onmousedown=disableclick;
    }

    if (document.all)
    document.onmousedown=disableclick
    else if (document.layers)
    associateimages()
    </script>


    功能:禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt

    <script language="JavaScript">
    <!--
    function key(){ 
    if(event.shiftKey){
    window.close();}
    //禁止Shift
    if(event.altKey){
    window.close();}
    //禁止Alt
    if(event.ctrlKey){
    window.close();}
    //禁止Ctrl
    return false;}
    document.onkeydown=key;
    if (window.Event)
    document.captureEvents(Event.MOUSEUP);
    function nocontextmenu(){
    event.cancelBubble = true
    event.returnValue = false;
    return false;}
    function norightclick(e){
    if (window.Event){
    if (e.which == 2 || e.which == 3)
    return false;}
    else
    if (event.button == 2 || event.button == 3){
    event.cancelBubble = true
    event.returnValue = false;
    return false;}
    }
    //禁右键
    document.oncontextmenu = nocontextmenu;   // for IE5+
    document.onmousedown = norightclick;   // for all others
    //-->
    </script>

    <body onselectstart="return false"; onpaste="return false";>

    如何用用javascript 禁止右键,禁止复制,禁止粘贴,做站时常会用到这些代码,所以收藏了一下!

    1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键特效
    <table border oncontextmenu=return(false)><td>no</table> 可用于Table

    2. <body onselectstart="return false"> 取消选取、防止复制 javascript技巧

    3. onpaste="return false" 不准粘贴技巧

    4. oncopy="return false;" oncut="return false;" 防止复制的javascirpt特效

    JavaScript Math(算数)对象

    Math(算数)对象的作用是:执行常见的算数任务。

    round()四舍五入

    Math.round(0.60)   1

      random()

    Math.random()    0.6291165814237754

    Math.max(5,7)   7

    min()

    Math 对象提供多种算数值类型和函数。无需在使用这个对象之前对它进行定义

    Math 对象方法

    方法描述
    abs(x) 返回数的绝对值。
    acos(x) 返回数的反余弦值。
    asin(x) 返回数的反正弦值。
    atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
    atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
    ceil(x) 对数进行上舍入。
    cos(x) 返回数的余弦。
    exp(x) 返回 e 的指数。
    floor(x) 对数进行下舍入。
    log(x) 返回数的自然对数(底为e)。
    max(x,y) 返回 x 和 y 中的最高值。
    min(x,y) 返回 x 和 y 中的最低值。
    pow(x,y) 返回 x 的 y 次幂。
    random() 返回 0 ~ 1 之间的随机数。
    round(x) 把数四舍五入为最接近的整数。
    sin(x) 返回数的正弦。
    sqrt(x) 返回数的平方根。
    tan(x) 返回角的正切。
    toSource() 返回该对象的源代码。
    valueOf() 返回 Math 对象的原始值。


     
     
     
     
     
  • 相关阅读:
    NOIP 模拟 序列操作
    LUOGU 1525 关押罪犯
    HDU2473 Junk-Mail Filter
    BZOJ 2096 Pilots
    luogu 3939 数颜色
    NOIP模拟 赌博游戏
    Unity3D
    HTML5
    Cocos2d-x——支持多触点
    Cocos2d-x——Cocos2d-x 屏幕适配总结
  • 原文地址:https://www.cnblogs.com/geekjsp/p/6279810.html
Copyright © 2011-2022 走看看