• 笔记(乱)


    1、

    var a=+'86';
    console.log(a);//输出86,+会把字符串转化为数字或者NaN
    var a=+'2R';
    
    console.log(a);
    //如果引号内不全是数字就转化为NaN

    2、运算符优先级

    算术运算符最高
    关系运算符次之
    逻辑运算符次之
    例如:9>3+4&&7
    先算3+4 再判断9是不是大于7,再&&

    3、短路逻辑

    //短路逻辑
    
    var a=42&&5142;
    a;//第一个条件不为0(满足),则输出第二个条件的值
    
    var a=0&&5142;
    a;//第一个条件为0(不满足),则输出第一个条件的值,第二个条件不理会

     4、声明时无定义则转为默认值写法

     1 function Address(stress,xno){         //构造器函数首字母默认大写
     2    this.stress=stress||"Huang Quan Road";
     3    this.xno=xno||135;
     4    this.toString=function(){
     5            return "stress:"+this.street+",No:"+this.xno;
     7      }   
     9 }
    11 /*
    12 如果传入参数并没有street和xno,则使用默认值Huang Quan Road和135
    13 */

    5、call()和apply()函数

    call和apply通常用来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数,不同的是,apply的第二个参数为一个函数需要的参数

    组成的一个数组,而call则需要跟若干个参数,参数之间以逗号","隔开。

    6、new的本质:使用new操作符来作用于一个函数,实质上发生如下动作:首先,创建一个空对象,然后用apply方法,将这个空对象传入作为apply的第一个参数

    以及上下文参数,这样函数内部的this将会被这个空的对象所替代。

    1 var triangle=new Shape("striangle");
    2 
    3 // 调用构造器Shape(),实际上等价于如下
    4 
    5 var triangle={};
    6 Shape.apply(striangle,["triangle"]);
    7 
    8 //上行中第一个striangle,为空对象,第二个"striangle"为传入Shape的参数

     7、JavaScript预包装的9个原生对象构造函数如下:Number().  String()   Boolean()   Object()   Array()   Function()   Date()   RegExp()   Error()   

     以上九种原生构造函数返回值中,除了Function()和RexExp()的返回值类型为function外,其他都是object

    8、实例化对象的__proto__属性不一定被所有浏览器兼容,如对某一个实例化对象var myJob=new object;

        其原型myJob.__proto__===myJob.constructor.prototype(只能写成后者,前者可能不被识别)

    9、将对象b的原型指向一个新的对象a(b继承之a,a是b的原型),可以采用如下写法:

    1 b.prototype=new a("tom");
    2 // 假设对象a有一个参数
    3 
    4 //也可以写成如下等式
    5 var c=new a("tom");
    6 b.prototype=c;

     10、JavaScript中比较两个数组相等
    直接比较数组相等,实际上是比较数组的内存地址是否相等,所以,直接用==和===比较两个数字,最后都会返回false;

    var a=new Array("1");b=new Array("1");console.log(a==b);
    
    false 
    undefined
    
    var a=new Array("1");b=new Array("1");console.log(a===b);
    
    false 
    undefined

    事实上,要判断两个数组是否相等,只能将数组现转化为字符串,再比较字符串是否相等,需要调用toString()方法:

    var a=new Array("1","2"),
    b=new Array("1","2");
    console.log(a.toString()===b.toString());
    
    true 
    var a=new Array("1","2"),
    b=new Array("1","2");console.log(a.toString()==="1,2");
    
    true 

    更严格来说,如果两个数组中元素相同,但顺序不同,则需要先对数组进行排序,再对排序完成的数组进行比较:arr.sort().toString();

    var a=new Array("1","2","tt"),b=new Array("1","tt","2");
    console.log(a.toString()===b.toString());
    
    false 
    undefined
    
    var a=new Array("1","2","tt"),b=new Array("1","tt","2");
    console.log(a.sort().toString()===b.sort().toString());
    
    true 
    undefined


  • 相关阅读:
    网站SEO优化问答精选
    用eclipse怎样将本地的项目打成jar包上传到maven仓库
    查询linux机器的公网ip
    Srping mvc mabatis 报错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    使用SecureCRT的SFTP在WINDOWS与LINUX之间传输文件(转载)
    苹果手机如何减少后台流量
    《图解CSS3——第4章 CSS3背景-2》
    《图解CSS3——第4章 CSS3背景-1》
    《图解CSS3——第3章 CSS3边框-4》
    《图解CSS3——第3章 CSS3边框-3》
  • 原文地址:https://www.cnblogs.com/pm-dongjian/p/5022086.html
Copyright © 2020-2023  润新知