js手動でnew、instance ofを実現
666 ワード
以下の方法は直接測定して有効です.
newを実現
newを実現
function _new(fn, ...args) {
//
let obj = new Object();
obj.__proto__ = fn.prototype; // obj __proto__ fn prototype,
let result = fn.apply(obj, args) // this
return typeof result === "object" ? result : obj;
}
instance ofを実現function instance_of(L, R) { //L object,R constructor
const R_P = R.prototype; // R
L = L.__proto__; // L ,
while (true) {
if (L === null)
return false;
if (R_P === L) // : true
return true;
L = L.__proto__;
}
}