最近再学习 javascript 设计模式
第一个 单例模式中 有个例子 如下:
<body>
<button id="loginBtn">登录</button>
<script type="text/javascript">
var createLoginLayer = function(){
var div = document.createElement("div");
div.innerHTML = '我是登录浮窗';
div.style.display = 'none';
document.body.appendChild(div);
return div;
};
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments));
}
};
var createSingleLoginLayer = getSingle(createLoginLayer);
document.getElementById('loginBtn').onclick = function(){
var loginLayer = createSingleLoginLayer();
loginLayer.style.display = 'block';
};
</script>
</body>
实现是 需要登录框时 点击登录时 只出现一个登录框 其中
var getSingle = function(fn){
var result;
return function(){
return result || (result = fn.apply(this,arguments));
}
};
这段代码中fn.apply(this,arguments) 不知道怎么理解 用断点查看 其中的this指向window 但是我用fn();替换也是可以的 不知道fn.apply(this,arguments)这段代码怎么理解 我知道apply() 这个第一个参数是绑定上下文用的, 是否当createSingleLoginLayer()被调用时this是否指向createSingleLoginLayer本身 请解答下