zoukankan      html  css  js  c++  java
  • JavaScript 相关

    1.null和undefined区别

         undefined 继承自null,两者都是浏览器window的一个特殊属性

    例:  

          alert('undefined' in window); //输出:true 
          var anObj = {}; 
          alert('undefined' in anObj); //输出:false 

         undefined  表示变量未定义或者定义了未赋值的值

    例: 

         var a;
         alert(a);//输出:undefined 
         alert( typeof b);//输出:undefined
         alert(b);//产生错误

       对于未声明的变量,只能执行一项操作,即使用typeof 检测其数据类型

      即便未初始化的变量被自动赋予undefined值,但显示地初始化变量依然是明智的选择。如果能做到这一点,那么当typeof操作符返回undefined值时,我们就知道被检测的变量还没有被声明,而不是尚未被初始化。

       null代表空指针对象,所以用typeof检测null回返回"object"

    无论在什么情况下没有必要把一个变量显式的设置为undefined;但只要意在保存对象的变量名还没有真正保存对象(实例化),就应该明确地让该变量保存null值。这样做可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。

    个人认为null和undefined主要作用是区分未赋值的对象和变量,正确使用null和undefined可以避免一些混乱

    2.RegExp类型

      var expression=/parttern/flags

       var parttenr1=/[bc]at/i

       var parttenr2=new RegExp("[bc]at","i")

       alert(parttenr2.source);正则表达式字面量值

      alert(parttenr2.golbal);是否设置了global标志

       alert(parttenr2.ignoreCase);是否设置了i标志

       alert(parttern2.multiline);是否设置了m标志

       alert(parttern2.lastIndex);整数,表示开始搜索下一个匹配项的字符位置,从0算起

    所有元字符都要双重转义:

       /\w\\hello\\123\  等价"\\w\\\\hello\\\\123"

        exex()匹配返回一个Array数组,包含2个额外属性,index和input,index表示匹配字符出现的位置,input表示应用正则表达式的字符串

          var test="cat bat bat";

          var matches=parttern2.exec(text);

          alert(matches[0]);

        test()方法接受一个字符串参数,匹配模式返回true

    3.作用域链(Scope Chain)
       JavaScript中的一种重要机制,JS中所有的标识符(Identifier)都是通过Scope Chain来查找值的。

    词法作用域(Lexical Scoping)
       JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.
       这个作用域我们称之为[[scope]]
       非内嵌函数的[[scope]]都是宿主对象,不同的宿主会有不同的内容

    var i = "w i"; 
    var a =function(){ 
        alert(i); 
    } 
    var b = function(){ 
        var i = "b i"; 
        a(); 
    } 
    var c = function(){ 
        a(); 
    } 
    a();
    b();
    c();


    输出都为 w i

    call apply都不继承原型链
    只继承函数中定义的方法属性

    Function

    当一个函数对象被创建时,Function够在其产生的函数对象会运行类似这样的代码:

       this.prototype={constructor:this}

    新函数对象被赋予一个prototype属性,其值是包含一个constructor属性且属性值为该新函数对象。该prototype对象是存放继承特征的地方,因为JavaScript没有提供一种方法确定哪个函数式打算用来做构造器的

  • 相关阅读:
    Android录制视频添加水印的高效方案之YUV帧数据覆盖
    Android 数据库迁移--自定义数据类型
    Android Camera录制视频添加水印
    Android视频录制 花屏、绿屏的分析及解决方案
    Android Moudle封装SDK的步骤及注意事项总结
    Android音频流+视频流合成视频及提取音频流、视频流数据
    常见排序算法以及时间复杂度
    整合两个有序集合 时间复杂度最小为O(n)
    Android启动app步骤简介
    HihoCoder String Matching Content Length
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2580004.html
Copyright © 2011-2022 走看看