1
我正在做一些Node.js,我想用閉包表示來創建我的對象。我想我失去了一些東西,因爲簡單的東西一樣,這是不工作:JavaScript關閉操作
var Room = function(foo) {
this.name = foo;
this.users= [];
return {
getName : function() {
return this.name;
}
}
}
var room = new Room("foo");
console.log(room.getName());
我還沒有嘗試過的參數..和仍然沒有工作。
var Room = function() {
this.name = "foo";
this.users= [];
return {
getName : function() {
return this.name;
}
}
}
var room = new Room();
console.log(room.getName());
然而,像這樣的工作:
var Room = function(foo) {
this.name = foo;
this.users= [];
}
var room = new Room("foo");
console.log(room.name);
我不明白爲什麼這是行不通的。
--Edited
感謝Amadan我發現這樣做的正確方法:
var Room = function() {
var name = "foo";
var users= [];
return {
getName : function() {
return name;
}
}
}
var room = new Room();
console.log(room.getName());
這樣 「名」 和 「用戶」 被封裝。
有一點需要記住的是,使用這種方法'new Room()instanceof Room === false''。 – PeterT
這有多糟糕? –
很難說真的,總體來說可能不算太差。這種事情最終會導致一些模糊的錯誤或者可能阻止你做某件事情......很多'instanceof'的使用最終成爲反模式...... – PeterT