原型链

2016-11-02  本文已影响0人  饥人谷_罗伟恩

问答

1.有如下代码,解释Person、 prototype、proto、p、constructor之间的关联。

2.上例中,对对象 p可以这样调用 p.toString()。toString是哪里来的? 画出原型图?并解释什么是原型链。

3.对String做扩展,实现如下方式获取字符串中频率最高的字符

  String.prototype.getMostOften = function(){
    var json = {},
        max = 0,
        result;
    for(var i=0;i<this.length;i++){
      if(json[this[i]]!==undefined){
        json[this[i]] += 1//这个字母出现一次就在后面加一次1, 给json设key&value,value就是出现次数
      }else{
        json[this[i]]=1;
      }
    }
    
    for(var key in json){
      if(json[key]>max){//经常使用这种方式比较大小。。假设一个值谁比他大就等于谁最后再返回出来,该值就是最大值
        max = json[key];
        result = key;
      }
    }
    return result;
  }  

  var str = 'ahbbccdeddddfg';
  var ch = str.getMostOften();
  console.log(ch); //d , 因为d 出现了5次

4.instanceOf有什么作用?内部逻辑是如何实现的?

//用于判断Func的原型对象是否在obj的原型链上
function isInstanceOf(obj,Func){
  var O = obj.__proto__;
  var F = Func.prototype;
  while(true){
      if(O===F){
       return true
       }  
      O = O.__proto__;
      if(O===null){
        return false
       }//当最终指向null,也就是Object的原型对象  
  }
}
微信截图_20161102165949.png
上一篇 下一篇

猜你喜欢

热点阅读