/* * 这是一张 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; }