在prototype中定义函数的问题

zhou3724042 2011-07-06 01:44:16

var B = function() {};

B.prototype = {
func : function() {
var i = 1;
return function() {
return i++;
}
}()
};

var a = new B().func();
var c = new B().func();


想实现私有调用,为什么a为1,c为2
...全文
97 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsw645645645 2011-07-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhou3724042 的回复:]
JScript code


function b(){
var i = 1;
return function() {
return i++;
}
}
var a = b();
var c = b();





a,c的结果为什么是1,1

[/Quote]

因为每次调用b(),var i = 1; i都被重新赋值了
zhou3724042 2011-07-06
  • 打赏
  • 举报
回复

[code=JScript]
function b(){
var i = 1;
return function() {
return i++;
}
}
var a = b();
var c = b();


a,c的结果为什么是1,1
[/code]
ZiSheng 2011-07-06
  • 打赏
  • 举报
回复
1楼正解。
lsw645645645 2011-07-06
  • 打赏
  • 举报
回复

func: function () {
var i = 1;
return function () {
return i++;
}
}() //这里定义后马上执行,形成闭包了,i一直存在了,你把后面括号去了

调用改成这样

var a = new B().func()();
var c = new B().func()();

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧