javascript的高级面向对象基础

1、javascript包含:
    ECMAscript:描述了JS的语法和基本对象(核心)、
    DOM(文档对象模型:操作节点)、
    BOM(浏览器对象模型:document,alerr,location等等)
2、javascript基本类型:字符串string,number和(boolean)布尔类型
3、js复合类型(对象类型)有:Array、Date、Number、Boolean、Object、RegExp(正则表达式)、Math、Function
   两个核心类型:Object、Function
4、两个空类型:undefine和null
5、js获得类型的运算符是:typeOf,
   该运算符返回的数据类型是:字符串(string)类型
6、===:全等,既比较值,也比较类型    
7、in运算符:判断对象有某种对象成员或者属性,对象是键值对的集合
  var o={name:'Jim'};
  var s1='age';
  console.log(s1 in o)返回的是boolean类型
  判断对象方法有某种属性的方法
  (1)if(s1 in 0)
   (2)对象就是键值对的集合
      var has=false;
      for(var k in o){
      if(k==s1){
      has=true;
       break;}}
   (3)//浏览器能力检查的代码
      if(!document.getElementsByClassName){//有该方法}else{//没有该方法}
      因为document.getElementsByClassName为undefine,所以!document.getElementsByClassName就为true
    
    if(o.age){}判断是否有age
    
    var s3="age";
   //如果希望使用s3来判断 对象o 是否有该属性
   if(o[ s3 ]){}//关联数组

8、条件运算符:> == === <  <= >= != !==
9、创建对象可以使用:new或者直接量(字面量)
 
   重要:值类型和引用类型
   (1)、值类型:按值传递,将变量中的数据完成的拷贝一份,赋值给新的变量
         var num=123;
         var num2=num;
         //此内存中有两个123副本
        console.log(num,num2);//123,123
        num=1;
        console.log(num,num2);//1,123
        num2的值没变
   
   (2)、引用类型:表示变量存储的是数据的地址(引用)
          var o={n:123;}//对象
          var o2=o;
         //内存中只有一个数据对象,是将o中的地址赋值一份,赋值给o2
         //既o和o2同时指向数据
         console.log(o.n,o2.n);//123,123
         o.n=1;

         sonsole.log(o.n,o2.n);//1,1

       注意:对象中的属性是值类型

        var o3={

        n:[1,2,3];

       m:{n:123}

    }

 输出数组中第二个元素:o3.n[1];


10、js中什么叫逻辑中断:

//如果传入num的值就打印num的值,如果没传入就打印没有参数

function fn(num){

     if(num!==undefine){

      console.log(num);

}else{

  console.log("没有参数");

}

fn(123);

fn();

结果:123

             没有参数

方法二:三元运算符

var number=num!==undefine?unm:"没有参数"


方法三:短路

function fn(num){

num=num||"没有参数“;

console.log(num);

}

fn(123);


||   :如果第一个为真就返回第一个表达式,如果为假,就返回第二个表达式

&&  :如果第一个为假,就返回第一个表达式,如果为真,就返回第二个表达式

表达式1&&表达式2&&表达式1:验证表达式1是否满足,如果满足表达式1,就执行表达式2的代码,再返回表达式1



11、js中delete运算符的作用是:

delete 删除;

语法:boolean delete数据;

在当前作用域上删除数据;

用法:

(1)、删除数组中的一个元素

(2)、删除一个对象的属性或者方法

(3)、删除一个没有用var声明的变量


var  arr=[1,2,3,4];

var isTrue=delete(arr[2]);

console.log(arr);

console.log(arr.length);

结果:[1,2,4]

            4

因为delete只是把第三个元素删除,把相对应的数据变成undefine。



var o={name:"alvin"};

var isTrue=delete o.name;    //o.name===o["name"]  //isTrue=true;

//在jquery清除缓存框架的时候用到此方法



var n=1//如果没在后面加上分号或者逗号,默认会在后面加上分号,

     m=2  //如果在1后面默认加上分号,那么m=2就变成全局变量

 var isTrue1=delete n;

var isTrue2=delete m;

console.log(isTrue1);//false

console.log(isTrue2);//true

console.log(n);//1

console.log(m);//报错,is not define

//is not define 和undefine的意义不一样,前者为报错,后者没定义




12、  function fn(){

     console.log(num);

    console.log(123

}

fn();//报一次错,因为js出现错误后不再继续执行下面代码

fn();

有些时候代码的错误是需要处理的,但是不清楚是否会在这里报错

try  catch语法:

try{

 可能出现错误的代码

}

catch(e){

如果try中出现错误才会执行

}

finally{

无论是否出现异常,最后执行,可选

}


function fn(){

 try{

  console.log(num);

    }

catch(e){//

console.log(e);//e是try异常后抓回来的异常结果,异常的内容

//console.log("num“没有定义);

        }

console.log(123);

}

fn();//结果:num未定义

fn();//结果:123;

 

e:这里的错误有一个属性叫异常  exception

try:试一下

catch:抓住  异常


13、自己抛出异常:throw

    语法:throw  + 对象

   一般对象是:new Error("错误消息");

function fnError(){

 throw new Error("我是一个自定义错误");

}

function fnc(){

  try{
   fnError();

}

 catch(e){

   console.log(e):

}

fnc();

结果:我是一个自定义错误


14、循坏语句有四种,for、while、do...while和for..in....

15、分支语句有两种,if ....else和switch...case...

16、跳转语句:break和continue;

       break:跳出循坏

     continue:跳出本次循坏



 函数与对象:定义函数的基本语法

1、声明式函数:

fnc();

function fnc(){

console.log(123);

}

注意:A、声明式函数最后面是不需要分号的,它不是语句;B、声明式函数在前面或者后面都可以调用

js执行:预解析,一句一句执行,分为两步走;在js执行第一条fnc()时候,早已经将fnc()的函数读取了,所以直接解析。


重点:声明式函数不允许出现在表达式中

if(false){

function fn(){

   console.log(123);

     }

}

fn();

结果:123

因为在执行IF的时候,function fn(){console.log(123)}这条代码不存在在表达式中,已经自动调出来了



2、函数的字面量(直接量 Lamda表达式)

fn();//函数字面量特点:函数fn();在上面是无法调用下面的语句的,结果:is not the function,

var fn=function(){//function(){}自动变成了表达式,而不是函数,所以没有值

};//后面有分号,所以不是表达式,是语句:表达式+分号

注意:此时函数做为表达式存在,凡是将数据和运算等联系起来,有值的式子就是表达式:

1  是表达式,以为  +1=1;

1+2;

new Data()

function(){}  都是表达式


3、new Funcion








         

      


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值