自己写一个插件,单独调用没有问题,但是有2个元素进行调用的时候,内部参数就会影响,知道闭包可以解决,但是不会写.求告知js组件的闭包怎么写,jquery组件的闭包怎么写.只要外面的模式就可以,里面的方法自己实现.
把属性写到对象里,把方法写到对象里。
######你的插件是什么写的,如果是写成单例那就有影响,如果是不同的元素调用是就new一个对象的话,那就不会相互影响。js方法就是也是一种闭包,里边的影响不到外边的。。。其实我还不太明白你想要到达什么效果。。######jquery 的闭包写法: !function(w){ //..... }(window);你问题描述的不够清晰,不好针对性的给出详细答案,最好有贴出部分代码。######
闭包是伴随着作用域而生的,js中只有全局作用域和函数作用域。所以,闭包一般和函数相关。确切的说,是函数中的函数。举几个例子:
example1:
function log() { var logs = []; return function(data, end){ logs.push(data); end = end || false; if(end){ var val = logs.join('##'); console.log(val); logs = []; } } } var myLog = log(); myLog('a=1'); myLog('b=2'); myLog('c=3', true);
var myLog = log()获得这个内部函数,然后调用这个内部函数就可以了,这样“logs”的作用域就被牢牢的锁死了,只有myLog内部才能访问它。也可以变通一下。
example2:
var myLog = (function() { var logs = []; return function(data, end){ logs.push(data); end = end || false; if(end){ var val = logs.join('##'); console.log(val); logs = []; } } })(); myLog('a=1'); myLog('b=2'); myLog('c=3', true);
example3:
function plus(a) { return function(b) { return a + b; } } var add5 = plus(5); console.log(add5(1)); console.log(add5(2)); console.log(add5(3)); console.log(add5(4)); console.log(add5(5));
上两个例子中的“logs”也好,plus函数的参数“a”也好,在内部函数中称作“自由变量”,也就是当内部函数执行的时候,并不能在自身的作用域内发现这个变量,即这个变量,既不来自内部函数的参数,也不是函数内部声明的,所以函数执行时会到“定义这个函数的”作用域内查找。很幸运,我们的例子中,向上查找一次就找到了。
调用的时候$scope.meeting = new Meeting();
不知道这样算不算闭包呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。