常用但易忘的一些知识点

  • 递归调用arguments.callee();
  • caller和callee:arguments.callee返回当前正在执行的函数,function.caller返回函数的调用体所在函数。
  • 变量和函数提升:
    • 01、在使用函数表达式方式创建函数(var func = function(){})的时候,整个函数表达式并不会进行提升,只会对var声明的变量提升;
    • 02、预处理的时候,同名的函数都会进行提升,但是后面的会覆盖掉前面的;
    • 03、如果出现变量和函数同名的情况,则在进行提升的时候,只会提升函数到当前作用域顶端而忽略变量的提升操作。
  • 关于call和apply:
    • 01、call:对象a要调用对象b中的c方法时:b.c.call(a,d,e,...);d,e,...指传入b中的实参;并且把b中的this指向a。
    • 02、apply:b.c.apply(a,[d,e,...]);不需要更改this指向时a写成null,call同。
    • 03、apply的功能和call一模一样,但是只有一点不一样:Call的传参是平铺的,Apply是把所有参数放在一个数组里面的传递的。
  • splice(a,b,c)方法中a指要操作的位置,b指从a开始向后删除几个,c指要添加到位置a的东西。c省略时指删除;
  • split:把字符串切割为数组;
  • slice() 方法可从已有的数组中返回选定的元素,返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
  • 以下形成一个链式的结构,称之为原型链:
    • ① 每个构造函数都有原型对象
    • ② 每个对象都有自己的构造函数
    • ③ 每个构造函数的原型都是一个对象
    • ④ 那么这个构造函数的原型对象也有自己的构造函数
    • ⑤ 那么这个构造函数的原型对象的构造函数也有自己的原型对象
  • 原型链中的属性搜索原则:
    • 当访问某个对象的成员的时候,会先在自身中查找,如果找到则直接使用
      如果在自身中没有找到,则去当前创建当前对象的构造函数的原型对象中查找,如果找到了则直接使用
      如果在该原型对象中没有找到,则继续查找原型对象的原型对象(创建该原型对象的构造函数所对应的原型对象),如果找到则直接使用
      如果在原型对象的原型对象中也没有找到,则继续向上搜索....
      直到Object的原型对象,若还是没有,则返回undefined(属性)或报错(方法)。
  • 设置继承:
    SubClass.prototype = new SuperClass();
    SubClass.prototype.constructor = SubClass;
  • 在javaScript中,打印时会调用toString函数,相加计算会调用valueOf函数。
  • 生成图像占位符:
 
  imgSrc="http://placehold.it/50x50"
  • each方法中的this应该是value;
  • each是jQuery的方法(可以遍历真数组, 也可以遍历伪数组, 以及可以遍历对象(fn(k,v)));
  • map是jQuery的方法(可以遍历真数组, 也可以遍历伪数组, 以及可以遍历对象(fn(v,k)));
  • forEach是js方法(只能遍历真数组(fn(v,k));

你可能感兴趣的:(常用但易忘的一些知识点)