美文网首页
Javascript的一些解释

Javascript的一些解释

作者: lewiswon | 来源:发表于2017-01-14 23:29 被阅读45次

    1.原型(prototype)

    每个对象都可以连接到一个圆形对象,并且它可以从中继承属性,所有通过字面量创建的对象都连接到Object.prototype,它是Javascript中的标配对象。

    当你创建一个新对象时,你可以选择某个对象作为它的原型。Javascript提供的实现机制杂乱而复杂,但其实可以被明显地简化。

    我们将给Object增加一个create方法。这个方法创建一个使用原对象作为原型的新对象。

    if(typeof Object.beget !=='function'){
          Object.create=function(o){
          var F=function(){};
         F.prototype=o;
         return new F();
      }
    }
    
    var another_stooge=Object.create(stooge);
    

    原型连接在更新是不起作用的。当我们对某个对象做出改变时,不会触及该对象的原型:

    another_stooge['first-name']='Harry';
    another_stooge['middle-name']='Moses';
    another_stooge.nickname='Moe';
    

    原型连接只有在检索值的时候才被用到。如果我们尝试获取对象的某个属性值,但该对象没有此属性名,那么Javascript会是这从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型寻照,依此类推,知道该过程最后到达终点Object.prototype。如果想要的属性完全不存在于原型链中,那么结果就是undefined值。这个过程称为委托。

    原型关系是一种动态的关系。如果添加一个新的属性到原型,该属性会立即对所有基于该原型创建的对象可见。
    来源:Javascript语言精粹 p22

    2.反射(Reflection)

    检查对象并确定对象有什么属性是很容易的事情,是要试着去检索该属性并验证取得的值。typeof操作符对确定属性的类型很有帮助。

    var flight={number:876214,status:'in time',arrival:{country:'china',city:'chongqing'}}
      typeof flight.number    //'number'
      typeof flight.status  //'string'
      typeof flight.arrival  //'object'
      typeof flight.manifest //'undefined'
    
    

    请注意原型链中的任何属性都会产生值:

    typeof flight.toString  //'function'
    typeof flight.constructor //'function'
    

    另外可以使用hasOwnProperty方法,如果对象拥有独有的属性,它将返回true,该方法不会检查原型链。

      flight.hasOwnProperty('number');  //true
      flight.hasOwnProperty('constructor');  //false
    

    相关文章

      网友评论

          本文标题:Javascript的一些解释

          本文链接:https://www.haomeiwen.com/subject/xmxybttx.html