摘要:
简单写下函数对象类工具和对象类工具的区别
一.函数类工具可以使用作用new来实例化对象,而对象实例不能
let funToolObj = new FunctionTool();//可以实例化
let obj = new ObjUtil();//会报错
二.函数类工具使用prototype操作原型链,而对象类工具使用__proto__操作
三.函数类工具构造函数中的属性包括原型链prototype上的,只有当实例化一个对象出来才有值,而
对象类则在执行代码时就已经存在
FunctionTool.fun();
console.log(funToolObj.name1);//实例对象属性//会覆盖原型链上的属性
四.函数类工具方法可以直接使用(非构造函数中,非原型链上的),无需实例化
五.上面也有提到,函数类工具不能使用原型链上的属性、方法
// FunctionTool.protoFun();//没有实例化,会报错
FunctionTool.fun();
console.log(funToolObj.name1);//实例对象属性//会覆盖原型链上的属性
//对象类工具
let FunctionTool = (function(){
let FunctionTool = function(){
this.name1 = "xiaye_obj_1";
this.age = 18;
console.log("这里是TestUtil的构建函数");
//在实例化之后在能用
this.fun = function(){
console.log("use obj fun");
}
}
FunctionTool.fun = function(){
console.log("use FunctonTool fun");
}
let __proto = FunctionTool .prototype;
//实例化之后可以使用
__proto.protoFun = function(){
console.log("use prototyp fun");
}
__proto.name1 = "xiaye_prototype_1";
__proto.name2 = "xiaye_prototype_2";
return FunctionTool ;
})();
//对象类工具
let ObjTool = (function(){
let ObjTool = {
"name":"xiaye",
fun(param) {
console.log("use obj fun");
}
}
ObjTool.__proto__.name = "xiaye__proto__";
return ObjTool;
})();
let funToolObj = new FunctionTool();//可以实例化
// let obj = new ObjUtil();//会报错
// FunctionTool.protoFun();//会报错
FunctionTool.fun();
console.log(funToolObj.name1);//实例对象属性//会覆盖原型链上的属性
console.log(funToolObj.name2);//实例对象原型链上的属性
ObjTool.fun();//可以直接使用