javascript 中的函数,特性

来源:互联网 发布:网络教育本科毕业证 编辑:程序博客网 时间:2024/05/16 04:43

keyword & methods

  • var bar = prompt();
    /* get用户的输入,括号中是提示 */
  • const CON = 10;
    /* 常量名用全大写字母表示 */
  • var foo = parseInt("2a");
    /* 转化为数字,可追加第二个参数16or8,转化为16进制或8进制 */
  • obj.toString();
    /* 转化为字符,可追加第二个参数16or8,转化为16进制或8进制 */
    String(bar);
    /* 转化为字符(null,undefined也可) */
  • 将非属数值转化为数值:Number() parseInt() parseFloat()
    /* 转化为字符串 value.toString() 或 String(value) */
  • 将非布尔值转化为布尔值:Boolean()
    /* */
  • label 用来标记for之类的循环,再与break continue配合使用
    /* break 结束循环 continue 跳过这一轮,直接进行下一轮 */
    /* label: for(){} break label */
  • switch(expression){case value: statement break; case value: statement break; default: statement}
    /* default相当于else */
    /* switch 比较case时用的是 ===全等 */
  • bar-- ,--bar 前置递减与后置递减的区别;
    /* 区别:先计算还是先减一 */

    official methods

  • var bar = Math.random() ;
    /* return 一个 0~1 之间的小数 */
    var bar = Math.floor(foo);
    /* return去掉小数部分的foo,可与Math.random配合使用,效果拔群 */
  • array's method:

    /* inside[] 用arr[0]来get */
    • .length
    • .push(foo,bar,...)
      /* 追加foo,bar到末尾 */
    • .shift()
      /* 去除第一项并return之 */
      /* .unshift(foo,bar,...) */
    • .reverse()
      /* 颠倒 */
    • .sort(foo)
      /* 使用之前要声名函数foo,用foo来对此array进行排序 */
      /* 在foo中输入两个参数,return正数则num1排至num2之后,return负数则相反,return 0视为相等 */
      /* 默认情况为升序 */
    • .concat("",[1,2,3])
      /* 复制该array,将""和[]追加至尾部 */
    • .slice(1,4)
      /* 切片,[1]至[3]的部分,将之return */
    • .splice(1,2,foo)
      /* 替换,从[1]开始,删除两项,替换为foo */
    • .indexOf() 从头检索
      /* lastIndexOf() 从后检索 */
    • 迭代method:every(), filter(), forEach(), map(), some()
      /* (function(item, index, array){return(item)}) */
      /* every 与门 ,some 或门 , filter return(item > 2) */
      /* forEach() 对每一项运行传入的函数 , map() 对应项运行传入的函数后return这个新array */
    • .indexOf() 从头检索
      /* lastIndexOf() 从后检索 */
    • .reduce(function(prev, cur, index, array){return ...}, origin) 归并
      /* reduceRight() 方向相反,从尾部开始 */
      /* origin可选,为初始值 */
  • 正则表达式RegExp:

    • .
      /* */
  • 默认Object类型:Array, Date, RegExp
    /* return 一个 0~1 之间的小数 */

特性

  • 可通过方括号来访问对象的attributes obj["name"] === obj.name
    /* 优势在于可填入变量 */
  • arr[arr.length] = xx;
    /* 在array的尾部追加一项 */
  • callback 函数中的参数函数名可以直接替换为expression:function(){return;}
    /* */
  • 参数通过arguments这个数组来传递给函数
    /* 在function内部可以通过arguments来访问此数组 */
  • string是array,array未必是string
    /* */
  • 每个function有其对应的variable environment
    /* 若是在function中声明的function,他的environment拥有父function的local var以及global*/
    /* closure:nested function的free variable 与environment能找到对应的声明,function is closed */
  • function is pass-by-value
    /* 由于存储object的变量是指向object的指针,当arguement是object时,function的操作会改变该object本身 */
  • function 可以在call之后再declare
    /* two passes */
  • class constructor:
    function foo(a1,a2)
    {this.a1 = a1; this.a2 = a2;}
    /* */
  • typeof foo;
    /* 显示数据类型"string"、"array" */
  • bar instanceof foo;
    /* 判断foo是否bar的constructor,return一个bool */
  • foo === bar
    /* 严格相等:type和value都相等 */
  • const VARIABLE = 1;
    /* 声明常量,常量名全大写 */
    let va = 1;
    /* 此变量只在块内有效 */
  • 若把非数值变量用在一元加减计算中,会调用它们的valueOf(),或toString()
    /* */
  • undefined
    /* 未初始化 */
    null
    /* doesn't exist yet,usage: if(foo != null) */
    /* undefined == null */
    NaN != NaN
    /* NaN与任何value都不相等,包括NaN自己; 用isNaN(foo)来检验foo是不是NaN */
    /* typeof NaN, return number ; isNaN("string") return true*/
  • object:
    /* property之间用逗号分隔,不是分号 */

    • object constructor:
      constructor.prototype: 原型体
      /* prototypes are dynamic, 在其中添加的property、method,都会影响到instances */
      /* constructor特有的method */
      function Foo(a1,a2){this.a1 = a1; this.a2 = a2;}
      /* 类名首字母大写,相比于function,只是多了this. */var bar = new Foo(a1,a2);
      /* 类名首字母大写;不要忘记new operator,否则没有object returned */var bar = new Foo(params){this.a1 = params.a1};
      /* 若参数太多,为防止参数value顺序出错,可先封装至一个临时objectParams,再pass给constructor */
      /* constructor与prototype的区别,consturctor中的property,新建的instances中一定有,而prototype的则没有(一个负责初始化,一个负责继承,有了constructor,才有prototype)
    • ShowDog.prototype = new Dog()
      /* ShowDog这个constructor将继承Dog的prototype,之后可能需要ShowDog.prototype.constructor = ShowDog */
      /* 在ShowDog的constructor中可使用Dog.call(this,arg1,arg2),使该constructor拥有Dog的constructor的参数,即不必再复制this.arg1 = arg1 */
    • truck instanceof Car
      /* 检测truck的constructor是否Car,return一个bool */
    • obj.constructor
      /* return该object的constructor,即function foo(){_} */
    • obj.hasOwnProperty("propName")
      /* 检测obj是否有此property,return一个bool(prototype中的不算) */
    • delete obj.pro
      /* 删除该property */
    • console.log(obj)
      /* printf */
    • var obj = {a:1, b:function(){return x} }
      /* printf */
    • for(var p in obj){}
      /* for in 用来iterate object */
    • obj.name; obj[name]
      /* get property; it can be variable or expression in brackets */
    • js自带object-constructor: Date,Array,Error,
      /* get property; it can be variable or expression in brackets */
    • string.charAt(0)
      /* return 第0项 */
      string.substring(start,end)
      /* string中截取一段,小的那个是start */
    • Object的每个instance都有的method、attribute:
      /* .constructor */
      /* .hasOwnProperty(name) name必须是string */
      /* .isPrototypeOf(object) */
      /* .propertyIsEnumerable(propertyName) 检查是否能用for-in来枚举 */
      /* .toLocaleString() */
      /* .toString() */
      /* .valueOf() */

DOM

  • .innerHTML
    /* element的内容 */
  • 在header中script执行时,browser 还没有 load html,所以还没有DOM,故此时document的method都用不了
    /* */
  • obj.setAttribute ("attribute'sName","valueOfAttribue")
    /* It's a method that change/add attribute of element*/
    obj.getAttribute ("attribute'sName")
    /* return value of attribute */
  • docment.getElementByTagName("element")
    /* 字面意思,return一个由element-objects组成的Nodelist(like array)*/
  • events


    element.onmouseover = functionName;
    /* 鼠标一碰,call function; element.onmouseout相反*/
    setTimeout(functionName, 5000,arguement)
    /* 5000毫秒后call function(arguement)*/
    setInterval(functionName, 5000)
    /* 每隔5000毫秒call function*/

    handler event's property


    .target
    /* 遭到点击的element*/
    .type
    /* 该event的type*/
    .clientX/Y || .screenX/Y || pageX/Y
    /* 相对于窗口/屏幕/页面的坐标 */
0 0
原创粉丝点击