当复制的两个变量的地址不同时他们是不相等的如下代码所示
function getFunction(value){ return function(value){ return value; } } var a=getFunction(), b=getFunction(), c=getFunction(); console.log(a==b) //false
当定义一个独立函数时,this关键字绑定于全局名称空间。作为一个最直接的结果,挡在一个方法内创建一个内部函数时,内部函数的this关键字将绑定于全局名称空间,而不是绑定于该方法,为了解决这一问题可以将包裹的方法this关键字简单地赋值给一个名为that的中间变量。代码如下
obj = {}; obj.method = function(){ var that = this; this.counter = 0; var count = function(){ that.counter += 1; console.log(that.counter); } count(); //调用count函数 1 count(); //调用count函数 2 console.log(this.counter); //因此这里就是2了 } obj.methos(); //1 2 2
在javascript要使用私有方法或属性就要使用闭包了
function timemachine(){ //私有成员 var destination = "a,b"; //公有成员 this.getDestination = function(){ return destination; } } var delorean = new timemachine(); console.log(delorean.getDestination()); //a,b console.log(deloreon.destination); //undifine
时间: 2024-11-07 13:48:00