• javascript 语言精粹 学习笔记


    chapter 3: 对象

    1. null and undefine
      null 是对象使用;undefined是属性使用
      var obj = {"first":"Kevin","last":"Ge"}
      判断是否是null      if(obj["middle"] == null)
      判断是否是undefine  if(typeof obj["middle"] == "undefine")
              或   if(obj["middle"] === undefine)
    2. 属性默认值
      var middle = obj["middle"] || "null";
    3. 更新
      如果属性存在就更新,如果属性不存在,就新建这个属性
      var obj["first_name"] = "first_name";
      obj.nickname = "Fatty";
    4. 对象通过引用传递,值永远不会被拷贝
    5. 原型
      如果我们尝试去获取对象的某个属性值,且该对象没有此属性,那么javascript会尝试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,依次类推,直到该过程最后到达终点Object.prototype
      if(typeof Object.beget !== 'function')
      {
      Object.beget == function(o)
      {
      var F = function(){};
      F.prototype = o;
      return new F();
      };
      }
      var another_obj = Object.beget(obj);
    6. 反射
      1.typeof 检测所有属性(包括原型属性)
      typeof obj["first"] //string
      hasOwnProperty 仅检测自己的属性,不会检测原型属性
    7. 属性和数组
      属性:var obj = {"first":"Kevin","last":"Ge"}
      数组:var obj = ["kevin","Ge"]
    8. 用 for in 遍历属性(包括原型)
      var name;
      for(name in another_obj)
      {
      typeof another_obj[name] !== 'function'
      {//do something ....}
      }
    9. 删除自有属性
      自有属性是相对于原型属性而言,如果没有改变原型属性,仅引用原型属性;如果改变了原型属性,那么就会创建一个新的自有属性
      another_obj.nickname = "new nickname";
      delete another_obj.nickname;
      //use the original nickname in prototype
    10. 减少全局变量的污染//没有理解
      var MYAPP = {};
      MYAPP.obj = {"first":"Kevin","last":"Ge"}

    Chapter 4: 函数

    1. 函数也是对象
      因为函数是对象,所以它们可以像任何其他的值一样被使用。函数可以存放在变量,对象和数组中。函数可以被当做参数传递给其他函数,函数也可以再返回函数。而且,因为函数是对象,所以函数可以拥有方法。
    2. 函数参数
      如果函数参数过多,超出的参数就会被忽略
      如果函数参数过少,缺失的值就为undefined
    3. 当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到对象。
      var myObject = 
      {
      value: 0,
      increment: function(inc)
      {this.value += typeof inc === 'number'? inc:1;}
      };
      myObject.increment();
      alert(myObject.value);//1
      myObject.increment(2);
      alert(myObject.value);//3

      myObject.double = function(){var helper = function()} 

    4. 关于this
      方法是可以使用this,但方法里面的函数就不能使用this,需要加个属性过渡一下
      myObject.double = function()
      {
      var that = this;
      var helper = function(){that.value = add(that.value,that.value);};
      helper();
      }
      myObject.double();
      alert(myObject.value);//6  3+3
    5. new构造器调用模式
      如果在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。
    6. apply调用模式
      apply方法接收两个参数。1:将被绑定给this的值 2:参数数组
    7.  arguments数组
      通过arguments数组可以访问所有函数被调用时传递给它的参数列表
      var sum = function()
      {
        var i, sum =0;
        for(i=0;i<arguments.length;i++)
        {sum += arguments[i];}
        return sum;
      }
      alert(sum(1,2,3,4));//10
    8. 给类型增加方法
      Function.prototype增加方法,使得该方法对所有函数可用:
      Function.prototype.method = function(name, func)
      {
        if(!this.prototype[name])
        {
          this.prototype[name] = func;
        }
      }
      Number.method('integer',function(){return Math[this<0?'ceiling':'floor'](this);})
      (-10/3).integer();
      String.method('trim',function(){return this.replace(/^s+|\s+$/g,'');});
      "   neat    ".trim();
    9. 闭包
      函数可以访问它被创建时所处的上下文环境,这被称为闭包。
  • 相关阅读:
    PHP 缓存技术
    redis雪崩
    【Redis】- 缓存击穿
    Memcache 与 Memcached 的区别
    数据库设计:范式与反范式
    Thinkphp5多数据库切换
    PHP 分布式集群中session共享问题以及session有效期的设置
    Nginx使用upstream实现动静分离
    rsync 服务快速部署手册
    tp5 为什么使用单例模式
  • 原文地址:https://www.cnblogs.com/kevinge/p/1780507.html
Copyright © 2020-2023  润新知