• 遇到雷点集合


    1、chrom里面用drawImage无效,最后发现是因为图片没有加载就操作了。

    放在window.onload内即可、

    2、for in 问题

      对于数组来说 for (var ele in arr) ele 是arr的索引

      对于对象来说 for(var ele in obj) ele是obj的属性名

    3. js里所有函数参数都是形参

    var a = 1;
    function test(a){
     a = a+1;
    }
    console.log(a); //1

    4.关于对象复制的问题

    var p1 = new Person();

    这个表达式做了什么?

    首先  new xxx()  就是在内存中创建了一个 object
    var p1 = xxx  那个 现在  p1 这个变量保存了 这个object的地址

    到这里开始 访问 p1 就是访问这个object

    p1.age = 25;  这个  就是  object.age = 25

    var p2 = p1;   //这个吧p1 的值  赋予  p2  (因为p1 是指向一个对象的变量  所以 p2 现在 也指向 这个变量)

    p2.age = 51;  这个就是 object。age = 51

    //一直到这里位置
    现在内存有一个对象  object(new Person()创建的)  2个变量  p1 p2 (都指向  那个 object)

    p2 = null;  /这里  p2 指向了null  但是p1 还是指向那个 object


    数组的浅复制

    一、 错误实现
    var array1 = new Array("1","2","3"); 
    var array2; 
    array2 = array1; 
    array1.length = 0; 
    alert(array2); //返回为空

    这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类

    型。array2得到的是引用,所以对array1的修改会影响到array2。

    二、 使用slice()

    可使用slice()进行复制,因为slice()返回也是数组。

    var array1 = new Array("1","2","3"); 
    var array2; 
    array2 = array1.slice(0); 
    array1.length = 0; 
    alert(array2); //返回1、2、3  

    三、 使用concat()

    注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。

    var array1 = new Array("1","2","3"); 
    var array2; 
    array2 = array1.concat(); 
    array1.length = 0; 
    alert(array2); //返回1、2、3 

  • 相关阅读:
    核心数据类型
    Python入门
    [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)
    [Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理)
    [luogu5339] [TJOI2019]唱、跳、rap和篮球(容斥原理+组合数学)(不用NTT)
    用生成函数推导数列的通项公式
    [Luogu 5465] [LOJ 6435] [PKUSC2018]星际穿越(倍增)
    [BZOJ4569] [Luogu 3295] [SCOI2016]萌萌哒(并查集+倍增)
    [BZOJ4444] [Luogu 4155] [LOJ 2007] [SCOI2015]国旗计划(倍增)
    倍增好题记录
  • 原文地址:https://www.cnblogs.com/cyanqq/p/4957291.html
Copyright © 2020-2023  润新知