枚举属性

/*
 * 这是一张 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;
}
相关文章
相关标签/搜索