闭包,是几乎所有前端工程师必须要掌握的一个技术,这里简单说一下闭包的概念,闭包就是指在函数中调用函数以外作用域的行为。常见的闭包就是在函数内部再定义一个函数时,触发内部函数,使用外部函数的行为。
之前的对象创建分为原生部分和原型部分,基于闭包方式,可以把私有的基本类型打包起来,基于函数返回值方式建立引用。
但是原型部分的定义,感觉和闭包定义本身没有什么联系,所有再重新定义一个闭包。尝试把原型的定义也打包起来。
以下案例主要是理解关于JavaScript中封装思想,以及如何使用闭包技术来封装对象。
var Product = (function(){
var num = 10;
function _product(id,name,costPrice){
// 公有属性
this.name=name;//产品名称
// 公有方法
this.show=function(){
console.log("2019新品:"+this.name+",价格公道,只要:"+calculatorSalePrice());
}
// 私有方法
function calculatorSalePrice(){
return costPrice*4.5; // 一般手机利润是400%左右
}
// 私有属性
var _id = id;//产品编号
var _costPrice=costPrice;//产品成本价
// 特权方法(getter&setter)
this.setId=function(id){
_id = id;
}
this.getId=function(){
return _id;
}
this.setCostPrice=function(costPrice){
_costPrice = costPrice;
}
// 构造器
//this.setName(name);
this.setCostPrice(costPrice);
}
// 类原型公有定义
_product.prototype ={
// 公有属性
isCellphone: true,
// 公有方法
toString : function(){
console.log("果果爸爸青少年编程推荐,"+this.name+"好")
}
}
// 返回上面所有定义
return _product;
})();
var huawei=new Product("1