catvm/__bak/tools.js
Big1moster d843fcb236 dsf
2023-02-06 11:36:48 +08:00

45 lines
1.6 KiB
JavaScript

// 传进来的对象是一个实例还是一个原型
// 思路:遍历原型里面所有的值,拿出来进行封装
//判断对象的类型
function judge_type(pr,property,_name) {
var code = "";
// Screen.prototype.width = 1494;
var temp = _name+".prototype."+property;
switch (typeof (pr[property])) {
case "function":
code = temp + "= function " +property+"(){debugger;};catvm.safefunction("+temp+");";
break;
case "object":
code = temp + "= catvm.proxy(class " +property+"{});";
break;
default:
// "string"\"boolean"\"undefined"\"number"
code += _name+".prototype."+property + "=" +pr[property];
break;
}
return code;
}
function getcode(pr,_name) {
var code = "";
for (var property in pr.__proto__) {
console.log(property,typeof property);
// 原型、字段名、别名
code += judge_type(pr,property,_name) + "\r\n";
}
return code;
}
/*
浏览器运行我们的脚本:
getcode(localStorage,"Storage")
生成:
Storage.prototype.length=0
Storage.prototype.clear= function clear(){debugger;};catvm.safefunction(Storage.prototype.clear);
Storage.prototype.getItem= function getItem(){debugger;};catvm.safefunction(Storage.prototype.getItem);
Storage.prototype.key= function key(){debugger;};catvm.safefunction(Storage.prototype.key);
Storage.prototype.removeItem= function removeItem(){debugger;};catvm.safefunction(Storage.prototype.removeItem);
Storage.prototype.setItem= function setItem(){debugger;};catvm.safefunction(Storage.prototype.setItem);
然后我们再具体实现每个方法
*/