js中实现封装

在 person 之外的地方无法访问其内部的变量,而通过提供闭包的形式来访问:

var person = function(){  
    //变量作用域为函数内部,外部无法访问  
    var name = "default";     

    return {  
       getName : function(){  
           return name;  
       },  
       setName : function(newName){  
           name = newName;  
       }  
    }  
}();  

print(person.name);//直接访问,结果为undefined  
print(person.getName());  
person.setName("abruzzi");  
print(person.getName());


闭包的另一个重要用途是实现面向对象中的对象,传统的对象语言都提供类的模板机制,这样不同的对象(类的实例)拥有独立的成员及状态,互不干涉。虽然 JavaScript 中没有类这样的机制,但是通过使用闭包,我们可以模拟出这样的机制。

function Person(){  
    var name = "default";     

    return {  
       getName : function(){  
           return name;  
       },  
       setName : function(newName){  
           name = newName;  
       }  
    }  
};  

var john = Person();  
print(john.getName());  
john.setName("john");  
print(john.getName());  

var jack = Person();  
print(jack.getName());  
jack.setName("jack");  
print(jack.getName());



你可能感兴趣的:(js)