一、闭包应用-计算打车价格
需求案例:打车起步价13(3公里内)之后每多收一公里增加5元,用户输入公里数就可以计算 打车价格
如果拥堵情况下,总价格多收取10块钱拥堵费
var car = (function () {
var start = 13; //起步价 局部变量
var total = 0; //总价 局部变量
return {
//正常的总价
price: function (n) {
if (n <= 3) {
total = start;
} else {
total = start + (n - 3) * 5
}
return total;
},
//拥堵后的费用
yd: function (flag) {
return flag ? total + 10 : total;
}
}
})();
console.log(car.price(5)); //23
console.log(car.yd(true)); //33
console.log(car.price(1)); //13
console.log(car.yd(false)); //13
二,闭包思考题:
总结闭包是什么:闭包是一个函数(一个作用域可以访问另外一个函数的局部变量)
闭包作用:延伸了我们闭包的作用范围
思考题1
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function () {
return function () {
return this.name;
};
}
};
console.log(object.getNameFunc()()); //The Window
//分析object.getNameFunc()()
var f = object.getNameFunc();
//类似于
var f = function(){
return this.name;
}
f();
// function(){this}()
var name = "The Window";
var object = {
name: "My Object",
getNameFunc: function () {
var that = this;
return function () {
return that.name;
};
}
};
console.log(object.getNameFunc()()); //My Object
//分析:
var f = object.getNameFunc();
var f = function(){
return that.name;
} ;
f()