最簡單的建立對象方法
function User(name) {
this.name = name || ''
}
User.prototype.say = function() {
console.log('Hi, My name is ' + this.name);
}
var u = new User('tom')
缺點:此種方法沒法實現私有成員變量的隱藏
私有模式
var User = (function() {
var sayCount = 0;
var _say = function() {
sayCount ++;
}
return {
say: function() {
_say()
console.log('')
}
}
})();
var User = (function() {
var sayCount = 0;
var _say = function() {
sayCount ++;
}
return {
say: function() {
_say()
console.log('')
},
run: function() {
// 能夠調用say方法嗎?
// this.say(); 好像不能夠,這裏的this是context window對象。
// 這種模式是有缺點的,沒法在這裏調用say方法,只能這樣User.say()
// 若是私有方法出了bug,因爲沒法從外部打補丁,也沒法對私有方法進行擴展
}
}
})();
// Revealing Module
var User = (function() {
var sayCount = 0;
var _say = function() {
sayCount ++;
}
function publicSay() {
_say()
console.log('')
publicRun()
}
function publicRun() {
}
return {
say: publicSay,
run: publicRun
}
})();