zoukankan      html  css  js  c++  java
  • JS知识总结

    1、javascript继承机制

      原型继承,访问对象属性时,如果对象内部有就返回,找不到就会从对象原型指向的对象原型中查找,一层一层的查找,直到最顶层的对象原型还找不到,就返回undefined。

    2、$.get(0)、 $('.classname').get(0)、 $('.classname').eq(0)、$('.classname')[0]的区别

      $.get(0):jQuery封装ajax的get请求,0是url;

      $('.classname').get(0):获取所有class为classname的元素,返回第一个元素(原生DOM元素);

      $('.classname').eq(0):获取所有class为classname的元素,返回第一个元素(jquery对象,非原生);

      $('.classname')[0]:获取所有class为classname的元素,返回第一个元素(jquery对象,非原生)。

    3、解释下列名词 xhr、jsonp、cors

      xhr:即XMLHttpRequest对象,实现异步请求,也就是我们说的ajax;

      jsonp:实现跨域方法之一,通过脚本加载方式加载跨域数据,并传递一个callback函数给服务器端,服务器端调用callback并传入请求的数据作为参数;

      cors:跨域资源共享,不过应该属于服务器端的,需要修改请求头允许某域名请求,然后前端用ajax即可。

    4、简述冒泡机制和代理委托

      冒泡机制:事件触发会以冒泡形式,把事件触发传递给父级,直到DOM最上层

      代理委托:事件处理程序挂载在外层元素上,然后通过event对象的srcElement触发元素,执行相对应的代码

    5、JS闭包

      js闭包 就是函数声明的时候可以访问函数外部的变量,也就相当于一直引用这外部的变量(记住是函数声明的时候,不是函数调用),就把他叫做闭包函数。

    var oE = document.getElementsByTagName('div'),
        i=0,
        len=oE.length; 
    for(; i < len; i ++) {
        oE[i].onclick = (function (i) {
             return function () { 
                 alert('第' + i + '个div'); 
            } 
        })(i)
     } 

    6、js递归调用  

    function fact(num) {
         if (num <= 1) {
               return 1;
         } else {
               return num * arguments.callee(num - 1);  
         }
    }
    var anotherFact = fact;
    fact = null;
    alert(antherFact(4)); //结果为24.
    

    7、如何避免表单重复提交

    禁掉提交按钮
    表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。

    Post/Redirect/Get模式
    在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。

    这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

    在session中存放一个特殊标志
    当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。

    如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。

    这使你的web应用有了更高级的XSRF保护。

    在数据库里添加约束
    在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

    JS方法

    <script type="text/javascript">
      var flag= false;
      function checkSubmit() {
         if (!flag) {
         flag = true;
         return true;
      } else {
      alert("Submit again!");
      return false;
     }
    }
    </script>
    
    <form onsubmit="return checkSubmit();">

    8、CSS选择器的优先级和权重

      important > 内联 > ID > 类| 伪类| 属性选择 > 标签 | 伪元素 > 通配符 > 继承

    9、var person = new Person() 与 var person = Person()的区别

      使用new则是将之当做构造函数来调用,会创建一个该类的实例对象,这个对象的type是这个函数名,中间使用this.propertyname=value会对该实例对象的属性赋值,并且无论有没有  return,都会返回这个对象。

      而如果是直接调用就是简单执行里面的代码,不会创建实例对象,this指向的调用环境下的this对象,如果是在全局中直接调用,就是window,没有默认返回值。
     
    参考来源:http://www.imooc.com/article/5623
  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/lvmylife/p/5295430.html
Copyright © 2011-2022 走看看