zoukankan      html  css  js  c++  java
  • [JavaScript权威指南 [笔记]

    对象的比较均是引用的比较。(不可变的原始值和可变的对象引用)
    this返回调用这个方法的对象
    通过x!==x来判断x是否为NaN
    var max = max_width || preferences.max_width || 500;
    function copy(o,p){
    p = p || {};
    }

    对于p和q取任意值,这两个等式都永远成立
    !(p && q) === !p || !q;
    !(p || q) === !p && !q;

    a op= b;
    a = a op b;
    第一行中,表达式a计算了一次,第二行中,表达式计算了两次。

    var a=[1,2,3];
    delete a[2];
    2 in a; //=>false;
    a.length; //=>3;注意,数组长度并没有改变,尽管上一行代码删除了这个元素,但删除操作留下了一个“洞”,实际上并没有修改数组长度,因此a数组长度仍然是3。

    switch语句贴切的运用场景
    funciton convert(x){
    switch(typeof x){
    case 'number':
    return x.toString(16);
    case 'string':
    return '"'+x+'"';
    default:
    return String(x);
    }
    }

    javascript中有4中循环语句:while、do/wihle、for、for/in
    for(variable in object){
    statement
    }

    for/in 遍历对象全部属性
    function getvalue(portfolio){
    var total = 0.0;
    for(stock in portfolio){
    var shares = portfolio[stock];
    var price = getquote(stock);
    total += shares * prise;
    }
    return total;
    }

    throw语句
    function factorial(x){
    if(x<0) throw new Error("x不能是负数");
    for(var f = 1; x > 1; f *= x, x--){
    return f;
    }
    }

    try/cacth/finally
    try{
    var n = Number(prompt("请输入一个正数",""));
    var f = factorial(n); //上一个throw例子中的代码函数
    alert(n + "| = " + f);
    }catch (ex){
    alert(ex);
    }

    如果方法中使用了eval()函数,那么javascript解释器将不会对这个方法做任何代码优化。

    对象是可变的,我们通过引用而非值来操作对象。

    继承:假设要查询对象o的属性x,如果o中不存在x,那么将会继续在o的原型中查询属性相。如果原型对象中也没有x,但这个原型对象也有原型,那么继续在这个原型对象的原型上执行查询,知道找到x或者查找到x或者查找到一个原型是null的对象为止。可以看到,对象的原型属性构成了一个“链”,通过这个“链”可以实现属性的继承。


    对象检测属性:可以通过in运算符、hasOwnProperty()和propertyIsEnumerable()方法来完成这个工作。

    for/in 过滤原型继承属性和方法属性:
    for(p in o) {
    if(!o.hasOwnProperty(p)) continue;
    }
    for(p in o) {
    if(typeof o[p] ==== "function") continue;
    }

    ECMAScript 5定义了两个可以用于枚举属性名称你的函数:
    Object.keys();(返回对象可枚举的自有属性的名称的数组)
    Object.getOwnPropertyNames();(它返回对象所有的自由属性名称,而不仅仅是可枚举的属性)


    function inherit(o){
    if(o.typeof !=="object") return;
    var p = {};
    p.proptype = o;
    return p;
    }

    函数与方法:
    函数就是这样一段JavaScript代码,它只定义一次,但可能被执行或调用多次。如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法。(没有返回值的函数有时候称为过程)

    可变参数
    function max(/* ... */){
    var max=Number.NEGATIVE_INFINITY;
    for(var i=0;i<arguments.length;i++){
    if(arguments[i] > max) max = arguments[i];
    }
    return max;
    }
    类似这种函数可以接收任意个数的参数,这种函数也称为“不定实参函数”,这个术语源自古老的C语言。
    注意,不定实参函数的实参个数不能为零。

    闭包:
    函数体内部的变量都可以保存在函数作用域内,这种特性在计算机科学文献中称为“闭包”。

  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/vvonline/p/4847328.html
Copyright © 2011-2022 走看看