首先大家需要先明白几个概念,我也是踩过几个坑才发现构造函数并不是我们所想的那么简单的,
公有属性:就是构造函数的时候this所指向的那个属性,这是为了让所有实现这个构造函数的实例都能有的属性;
公有方法:同上。
私有属性:就是构造函数中通过var xx;所声明的那个属性,为何叫私有呢,因为他是在构造函数所在的作用域内声明的,因此叫做私有;
私有方法:同上私有属性的理解;
静态属性和静态方法(其实我是感觉很奇葩的):通过调用 构造函数名.xxx 实现的属性和方法,这个方法区别于私有属性和方法的最大区别就是这静态的不能被实例所拥有,但是私有却可以能被拥有。
对照着demo,自己去理解吧!
ps:前几天开发中遇到一个小问题,搞了半天是自己对作用域链有误解:每个函数都有自己的作用域,运行的时候都会产生各自的作用域链,二构造函数呢,当我们构造新对象的时候,构造函数把自己的作用域赋给了新对象,如果我们在构造函数中调用新对象作用域内的变量是不可能访问到的!!!
ps:http://blog.csdn.net/zzulp/article/details/8144520
http://www.cnblogs.com/jikey/archive/2011/05/13/2045005.html
给个demo:function my(msg){
this.myMsg = msg; //只在被实例化后的实例中可调用
var age = 29;
function aged(){
alert(that.name);
}
this.sayAge = function(){
alert(age); //在公有方法中可以访问私有成员
}
}
myObject.prototype.sayHello = function(){
alert(‘hello everyone!‘);
}
my.name = ‘china‘;
//静态方法
my.alertname = function(){
alert(this.name);
}
//实例化
var m1 = new my(‘111‘);
理解构造函数的几种方式没必要多说,理解以及用好了组合构造函数就够了,不过这里有一点需要提醒自己,就是高级技巧,特别是在单例模式和构造函数的方法的时候有用,还有以防构造函数被全局window。直接调用!!