JS-函数类对象工具和实例类对象工具的区别

摘要:

简单写下函数对象类工具和对象类工具的区别

一.函数类工具可以使用作用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();//可以直接使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值