本文介绍如何在JavaScript中通过构造函数定义实例属性,利用prototype原型对象共享方法,从而模拟C#等面向对象语言中的类功能。通过person示例演示属性读写与原型继承机制,帮助理解JS对象模型。
JavaScript构造函数与原型模拟类功能
代码如下:
// 构造函数定义
function person(name, age) {
this.name = name;
this.age = age;
}
// 定义person的原型,原型中的属性可被自定义对象引用
person.prototype = {
getName: function () {
return this.name;
},
getAge: function () {
return this.age;
}
}代码如下:
这里需要引入另一个概念——原型(prototype)。我们可以将prototype简单视为一个模板,新创建的自定义对象都是该模板的一个拷贝(实际上并非拷贝,而是链接,只是这种链接不可见,给人造成拷贝的错觉)。
JavaScript通过构造函数和原型的方式模拟实现了类的功能。
window.onload = function () {
person.prototype.sex = '男';
var fmj = new person('kkk', 22);
alert('第一次输出:' + fmj.sex);
fmj.sex = '保密';
alert('第二次输出:' + fmj.sex);
delete fmj.sex;
alert('第三次输出:' + fmj.sex);
// 在debug的控制台输出结果.
//console.log(fmj.getAge());
}