方法1:
function Student(){
var _name;
this.setName=function(name){
_name=name;
}
this.getName=function(){
return _name;
}
}
var stu=new Student();
stu.setName("zhangsan");
console.log(stu.getName());
输出结果:zhangsan.
弊端:每个get/set方法都存在于每个实例当中,而不是在prototype中,会造成一定的资源浪费。另外补充一个概念,特权方法,这是能够访问私有变量和私有方法的函数。所以在这里的get/set方法都称之特权方法。所以,特权方法在构造函数中定义是不恰当的。
加入私有作用域:
function Student(){
}
(function(){
var _name;
Student.prototype.setName=function(name){
_name=name;
}
Student.prototype.getName=function(){
return _name;
}
})();
var stu=new Student();
stu.setName("zhangsan");
console.log(stu.getName());
结果输出:zhangsan
这样就将特权方法建立在prototype上了,创建的Student将会引用prototype上的特权方法,可以减少资源占用。