JavaScript面向对象程序设计(6): 封装
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://devbean.blog.51cto.com/448512/174924
封装是面向对象的重要概念之一。如果一个程序没有封装性,也就谈不上什么面向对象。但是,JavaScript并不像其他的语言,比如Java,有公有变量和私有变量等;在JavaScript中只有一种作用域:公有作用域。在本章中,我们将会见识到JavaScript是如何实现封装的特性的。
function Person(name, age) {
this.name = name; // 定义一个公有变量
this.age = age;
this.show = function() { // 定义一个公有函数
alert( "name: " + name + "; age: " + age);
}
}
var bill = new Person( "Bill", 20);
alert(bill.name);
bill.show();
this.name = name; // 定义一个公有变量
this.age = age;
this.show = function() { // 定义一个公有函数
alert( "name: " + name + "; age: " + age);
}
}
var bill = new Person( "Bill", 20);
alert(bill.name);
bill.show();
似乎由this修饰的都是公有变量。事实确实如此,如果你要使一个变量成为公有变量,可以使用this。像上面代码中的name和age都是公有变量,在外面使用aPerson.name或者aPerson.age就可以访问到。
function Person(name, age) {
var name = name; // 私有属性
var age = age;
var show = function() { // 私有函数
alert( "name: " + name + "; age: " + age);
}
}
var bill = new Person( "Bill", 20);
alert(bill.name); // undefined
bill.show(); // error, 不存在
var name = name; // 私有属性
var age = age;
var show = function() { // 私有函数
alert( "name: " + name + "; age: " + age);
}
}
var bill = new Person( "Bill", 20);
alert(bill.name); // undefined
bill.show(); // error, 不存在
Person.num = 0;
// 静态属性
function Person() {
this.show = function() {
alert( "num: " + Person.num);
};
Person.num++;
}
var bill = new Person();
bill.show(); // 1
var tom = new Person();
tom.show(); // 2
bill.show(); // 2
function Person() {
this.show = function() {
alert( "num: " + Person.num);
};
Person.num++;
}
var bill = new Person();
bill.show(); // 1
var tom = new Person();
tom.show(); // 2
bill.show(); // 2
function Person(name, age) {
this.myName = name;
var myAge = age;
this.show = function() {
alert( "show = name: " + this.myName + "; age: " + myAge);
}
var showAll = function() {
alert( "showAll = name: " + this.myName + "; age: " + myAge);
}
}
var bill = new Person( "Bill", 20);
bill.show();
this.myName = name;
var myAge = age;
this.show = function() {
alert( "show = name: " + this.myName + "; age: " + myAge);
}
var showAll = function() {
alert( "showAll = name: " + this.myName + "; age: " + myAge);
}
}
var bill = new Person( "Bill", 20);
bill.show();
本文出自 “豆子空间” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/174924