1. 程式人生 > >用來枚舉屬性的對象工具函數

用來枚舉屬性的對象工具函數

peer row div ret let blog light 工具 con

1.把p中可枚舉的屬性賦值到o,並返回o(若o和p中有同名屬性則覆蓋)

function extend(o,p){
      for(prop in p){
           o[prop]=p[prop]
      }
      return o
}

2.把p中可枚舉的屬性賦值到o,並返回o(若o和p中有同名屬性,o不受影響)  

function merge(o,p){
      for(prop in p){
           if(o.hasOwnProperty[prop]) continue
           o[prop]=p[prop]
      }
      return o
}

3.如果o中屬性在p中沒有同名屬性,則從o中刪除這個屬性

function restrict(o,p){
      for(prop in o){
           if(!(prop in p))  delete o[prop]
      }
      return o
}

4.如果o中屬性在p中存在同名屬性,則從o中刪除這個屬性

function subtract(o,p){
      for(prop in p){
           delete o[prop]
      }
      return o
}

5.返回一個新對象,這個對象擁有同時在o和p中出現的屬性,如果o和p中有重名屬性,使用p中屬性值

function union(o,p){
   return extend(extend({},o),p)
}

6.返回一個新對象,這個對象擁有同時在o和p中出現的屬性,p中的屬性值被忽略  

function intersection(o,p){
   return restrict(extend({},o),p)
}

7.返回一個數組,這個數組是o中可枚舉的自有屬性的名字  

function keys(o){
  if(type of  o !== "object")  throw TypeError()
  var result = []
  for(var  prop in o){
    if(o.haOwnProperty(prop))
                result.push(prop)
   } 
   return result
}

  

  

  

  

用來枚舉屬性的對象工具函數