您的位置:首页 > Web前端 > JavaScript

js细节

2016-07-28 21:18 260 查看
一、js的组成

        1、ECMAscript:javascript的核心语法

        2、DOM:

        3、BOM:浏览器对象模型。最常见的就是window。

二、js的基本类型与复杂类型

      基本类型:数值类型 number、字符串类型string、布尔类型boolean、undefined、null注意:写类型时全部是小写

      大写是函数,构造函数就是大写。

     复杂类型:数组Array、对象Object、日期Date、Math、正则RegExp、Number、String、Boolean、函数Function

三、typeof运算符(获取类型的运算符)

        typeof  null  类型是object     一个变量只声明没有赋值,获取到的值就是:undefined

         null值只能给变量赋值,任何变量都获取不到null值

         typeof(new Function())  类型是function,其余的例如typeof(new Math)都是object

        使用typeof运算符获取到的结果,是string类型

四、相等和全等

       null==undefined   //true

        ===   1、先判断类型是否相同,如果不同直接就false  2、判断值

        基本类型比的是值本身,复杂类型要注意,比的不是值本身。{}==={}//false 就好像长得一样的双胞胎,两个{}是两个不同的对象,不是同一个对象。var obj1={};var obj2={};

五、in运算符

       for-in作用:遍历对象

       for(var k in obj){  

        k就是键,k是变量,是形参,要被对象中的实参代替。k对应的值得获取是:obj[k],不能写成obj.k,obj.k访问的是对象的属性,对象里面没有k这个属性,访问不到k对应的值。在for-in循环中,不能直接使用obj.k访问对象属性。

       }

      in的作用:(window自己有name属性) 

      语法:属性 in 对象

      判断 属性 是否在对象中,如果在对象中(通过对象可以访问到这个属性)返回true,如果没有(访问不到),返        回false。console.log(“name” in obj);"name"必须带引号,不然会报错,name不带引号是变量,是访问不到          的。可以“toString” in obj//true,但是null和undefined不能用toString,只能用String

        var arr=[1,3,9]; console.log(arr.toString())//1,3,9字符串  除了null和undefined都能调用toString(内置对象)

       console.log(obj.toString())//[object Object];toString.call([])//[object Array];toString.call(new
Date()) //[object Date] 

        var arr=[1]; console.log(1 in arr)//false 因为数组看的是索引,此时索引为0,没有索引1,因此值为false

六、创建对象的方式

       1、字面量方法

        ⑴  var obj={};;obj.name="jack";

        ⑵  var obj={ name:"jack"}

        2、使用new运算符

         var obj = new Object(); //当没有参数时,此处的小括号可以省略。  obj.name="jack";

七、值类型与引用类型(重点)

        值类型:变量中储存的是数据本身

        引用类型:变量中储存的是数据的地址(引用)

八、delete删除

         作用:1、删除不是使用var声明的变量,使用var声明的变量不能用delete删除。

                    2、删除对象中的属性。var o={name:“wu”};var b=delete o.name;    console.log(b);//false

                                        特殊情况:var o={name:"wu"};var b=delete  o.toString;  console.log(o.toString())//true

                    3、删除数组的索引。

九、异常处理和手动抛出异常

        ①try-catch-finally    catch和finally都可以省略

                try{

                       放可能存在异常的代码        

                 } catch (e){    e是error

                        如果try中出现了异常(错误)就会执行catch中的代码

                 }finally{

                           不管try有没有出现错误,都会执行

                  }

           ②手动抛出异常处理 

                      




十、创建函数

       将代码进行封装, 复用的逻辑单元 称为 函数.

      函数:复用(代码的重复利用).构造函数:复用(模板,复用产生对象的代码).

      3种方式创建函数:1、函数声明。2、函数表达式。3、new Function()

       ①function  fn(){}

       ②var fn=function(){}

       ③var fn=new Function(“console.log(‘obj’);”);    

         3种方式的区别:1、提升。函数声明:不管函数在那个地方声明的,任何位置都可以访问到

                                     2、出现的位置不同。函数声明不能出现在其他语句中。出现在全局环境中

                                     3、this

十一、面向对象

           面向对象:找到能完成这个事情的对象,让它帮你完成就行(调度者)。其实是把自己放在一个调度者的位置

           面向过程:所有的细节、步骤、过程,要一步一步亲历亲为(执行者)。其实是把自己放在一个执行者的位置

           面向对象是对面向过程的封装。

          面向对象优势(解决函数封装问题):封装代码,使代码更好维护;减少全局污染;将功能相近的代码组织到一起维护方便,找错方便。

           面向对象的基本模型:将数据与功能封装成函数(方法);将相关的功能绑定到一起(对象);将功能进行分组(模块)。

          对象的属性都是string类型。

           var o1={};  var o2={};   console.log(o1==o2)//false

            var o1={}; var o2={};  var obj={}; obj[o1]="jack";console.log(obj[o2]);//"jack"因为此时对象作为属性,被隐式转化为“”,由于o1和o2都是空对象,都被转化为空字符串“”,那么此时obj[o1]与obj[o2]是相同的,访问的是同一个属性,即obj[""],所以此时obj[o2]能够访问到obj[o1]的属性。

十二、函数的参数          

           函数的参数:1、 把函数参数看作是变量,只能在函数内部使用。2 、函数调用时参数传入顺序不能颠倒。

                                 3 、参数的值是在函数被调用的时候通过传入的参数设置的值。

                                 4 、函数调用时不传入参数,则函数内部获取参数的值为:undefined。

形参(形式参数),即函数定义时的参数,只起到占位的作用,等到函数被调用的时候,会被传入的具体值代替。

实参(实际参数),即函数被调用时的参数,是一个具体的值或者表达式(true、[2, 2]、{ name: "two"} 等)

函数多了之后的问题:1、全局污染。2、使得维护变得困难。解决方法:使用对象

十三、常用DOM操作

           四字总结:增删改查

             1.获取元素操作:getElementById   getElementsByTagName    getElementsByClassName

             2.元素节点操作:appendChild  insertBefore removeChild replaceChild cloneNode createElement                                                           createTextNode(创建文本节点)

             3.属性节点操作:getAttribute  setAttribute  removeAttribute

             4.常用DOM属性:className innerHTML innerText/textContent value children
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: