最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript闭包实例讲解_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:22:06
文档

JavaScript闭包实例讲解_javascript技巧

JavaScript闭包实例讲解_javascript技巧:这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。 首先,我们来构造一个简单的对象。 代码如下:var testObj = { value: 10, add: function(inc){ this.value += (typeof inc === number) inc : 1; }}
推荐度:
导读JavaScript闭包实例讲解_javascript技巧:这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。 首先,我们来构造一个简单的对象。 代码如下:var testObj = { value: 10, add: function(inc){ this.value += (typeof inc === number) inc : 1; }}


这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。

首先,我们来构造一个简单的对象。
代码如下:
var testObj = {
value: 10,
add: function(inc){
this.value += (typeof inc === "number") ? inc : 1;
}
};

testObj.add();
testObj.value; // 11

testObj.add(2);
testObj.value; // 13
这样写就有一个问题,value值不能保证不会被非法修改,可以按如下的方法进行修改。
代码如下:
var testObj = (function(){
var value = 10;
return {
add: function(inc){
value += (typeof inc === "number") ? inc : 1;
},
getValue: function(){
return value;
}
};
})();

testObj.add();
testObj.getValue(); // 11

testObj.add(2);
testObj.getValue(); // 13
我们可以通用调用一个函数的形式去初始化testObj,该函数会返回一个对象字面量,函数里定义了一个value变量,该变量对add和getValue方法总是可用的,但函数的作用域使得它对其他的程序来说是不可见的。同时,我们还可以得出一个结论,内部函数拥有比它的外部函数更长的生命周期。

我们再继续看一个构造函数调用的例子。
代码如下:
var MyObj = function(str){
this.status = str;
};

MyObj.prototype.getStatus = function(){
return this.status;
};

var obj = new MyObj("javascript");
obj.getStatus(); // "javascript"
这样写并没有错,但是会有一点“多此一举”,为什么要用一个getStatus方法去访问一个本可以直接访问到的属性呢?如果status是私有属性,那当然才有意义。
代码如下:
var obj = function(status){
return {
getStatus: function(){
return status;
}
};
};

var myObj = obj("javascript");
myObj.getStatus(); // "javascript"
这里当我们调用obj的时候,它返回包含getStatus方法的一个新对象,该对象的一个引用保存在myObj中,即使obj已经返回了,但getStatus方法仍然享有访问obj对象的status属性的特权。getStatus方法并不是访问该参数的一个副本,它访问的就是该参数本身。这是可能的,因为该函数可以访问它被创建时所处的上下文环境,这被称为闭包。

文档

JavaScript闭包实例讲解_javascript技巧

JavaScript闭包实例讲解_javascript技巧:这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。 首先,我们来构造一个简单的对象。 代码如下:var testObj = { value: 10, add: function(inc){ this.value += (typeof inc === number) inc : 1; }}
推荐度:
标签: 技巧 js 例子
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top