枚舉屬性

/*
 * 這是一張 JavaScript 代碼草稿紙。
 *
 * 輸入一些 JavaScript,而後可點擊右鍵或從「執行」菜單中選擇:
 * 1. 運行 對選中的文本求值(eval) (Ctrl+R);
 * 2. 查看 對返回值使用對象查看器 (Ctrl+I);
 * 3. 顯示 在選中內容後面以註釋的形式插入返回的結果。 (Ctrl+L)
 */


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

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

/*
*若是o中的屬性在p中沒有同名屬性,則從o中刪除這個屬性,返回o
*/
functon restrict(o,p){
  for(prop in o){
    if(!(prop in p)) delete o[prop];
  }
  return o;
}

/*
*若是o中的屬性在p中有同名屬性,則從o中刪除這個屬性,返回o
*/
function subtract(o, p) {
  for (prop in p) {
    delete o[prop];//刪除一個不存在的屬性不會報錯
  }
}

/*
*經過原型繼承建立一個新對象
*/
function inherit(p){
  if(p==null) throw TypeError();
  if(Object.create)
    return Object.create(p);
  var t=typeof p;
  if(t!=="object"&&t!=="function")throw TypeError();
  function f(){};
  f.prototype=p;
  return new f();
}

/*
*返回一個數組,這個數組包含的是o中可枚舉的自有屬性的名字
*/
function keys(o){
  if(typeof o !=="object")throw TypeError();
  var result=[];
  for(var prop in o){
    if(o.hasOwnProperty(prop))
      result.push(prop);
  }
  return result;
}
相關文章
相關標籤/搜索