目前比较常用的创建js类的方式是混合的构造函数/原型方式。下面我们来写一个简单的例子:
function Person(name, age, email){
this.name = name;
this.age = age;
this._email = email;
}
function _Person_show_me(){
alert('我叫' + this.name + ',我' + this.age + '岁了,我的email是' + this._email);
}
Person.prototype.show_me = _Person_show_me;
var he = new Person('小何', 28, 'baijun.he@163.com');
he.show_me();
- this的作用就是指向调用该方法的对象,比如这个例子,当调用new Person的时候,this就表示he这个对象,调用this.name 就等于 he.name。
- email前面为什么要使用一个下划线呢?因为js只有公共作用域,没有私用的属性和方法,所以开发者为了做区别,就用一个下划线表示这个属性或者方法是私有的,当然,本质上它很是公共的。有时候也这样写:_name_,看个人习惯啦。
- _Person_show_me中的第一个_下划线表示这个是私有方法,我们习惯在方法前加上类名区分这个方法是那个类的,所以第一单词是表示类名。当然你也可以写成其他的。
- 我们把方法_Person_show_me赋给Person的prototype属性,这样就可以使用能用 instanceof 运算符检查给定变量指向的对象的类型。