JavaScript物件導向-- 如何在類別中區分公開方法、屬性 & 私有函式、變數
之前曾說過:
方法 = 函式, 只是方法依附在某物件底下存在
屬性 = 變數, 只是屬性依附在某物件底下存在
(函式,和變數是男女朋友; 而方法和屬性是老公老婆, 人的本質不變)
因而,
能被外部使用稱為"公開方法" 、"公開屬性":
類別中的this可以指向"某實體呼叫這個方法所在當下的物件"。可被各個實體化後的物件使用
只供內部使用稱為"私有函式"、 "私有變數":
不屬於任何物件, 指向window, 因而當放在某個function內部, 會成為只能被內部使用。
e.g.
function CreatePerson(name, sex, year) {
this.name = name; // 公開屬性
this.sex = sex; // 公開屬性
function _caclAge(y) { // 私有函式
var today = new Date();
return today.getFullYear() - y;
}
var _age = _caclAge(year); // 私有變數。變數被儲存了,形成閉包(closure)
this.showAge = function() { // 公開方法。這個方法會寫在類別中是因age 是私有變數, 若以原型新增方法, 會參照不到此變數
console.log("my age: " + _age);
};
}
CreatePerson.prototype.showName = function() {
console.log("my name: " + this.name);
};
CreatePerson.prototype.showSex = function() {
console.log("my sex: " + this.sex);
};
var p1 = new CreatePerson("Mark", "man", 1985);
var p2 = new CreatePerson("Jack", "man", 1978);
console.log(p1.showAge()); // my age: 31, 因公開方法可被外部使用
console.log(p1.age); // undefined, 因私有函式不能被外部使用
方法 = 函式, 只是方法依附在某物件底下存在
屬性 = 變數, 只是屬性依附在某物件底下存在
(函式,和變數是男女朋友; 而方法和屬性是老公老婆, 人的本質不變)
因而,
能被外部使用稱為"公開方法" 、"公開屬性":
類別中的this可以指向"某實體呼叫這個方法所在當下的物件"。可被各個實體化後的物件使用
只供內部使用稱為"私有函式"、 "私有變數":
不屬於任何物件, 指向window, 因而當放在某個function內部, 會成為只能被內部使用。
e.g.
function CreatePerson(name, sex, year) {
this.name = name; // 公開屬性
this.sex = sex; // 公開屬性
function _caclAge(y) { // 私有函式
var today = new Date();
return today.getFullYear() - y;
}
var _age = _caclAge(year); // 私有變數。變數被儲存了,形成閉包(closure)
this.showAge = function() { // 公開方法。這個方法會寫在類別中是因age 是私有變數, 若以原型新增方法, 會參照不到此變數
console.log("my age: " + _age);
};
}
CreatePerson.prototype.showName = function() {
console.log("my name: " + this.name);
};
CreatePerson.prototype.showSex = function() {
console.log("my sex: " + this.sex);
};
var p1 = new CreatePerson("Mark", "man", 1985);
var p2 = new CreatePerson("Jack", "man", 1978);
console.log(p1.showAge()); // my age: 31, 因公開方法可被外部使用
console.log(p1.age); // undefined, 因私有函式不能被外部使用
留言
張貼留言