/* * 這是一張 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; }