使用私有变量的Javascript构建器模式
Javascript builder pattern using private variables
我试图在Javascript中创建一个使用私有变量的构建器模式,同时提供一个返回所有其他属性的mashup的公共访问器(fullName
)。这个问题和答案表明,我可以在person构造函数中使用Object.defineProperty
来访问私有变量,但它不起作用——instance.fullName
总是undefined
。
如何使构建器模式变量保持私有,但公共访问器可以在整个构建链中访问它们?
var Person = function () {
var _firstName, _lastName
Object.defineProperty(this, "fullName", {
get: function () {
return _firstName + ' ' + _lastName;
}
});
return {
firstName: function (n) {
_firstName = n
return this
},
lastName: function (n) {
_lastName = n
return this
}
}
}
var x = new Person().firstName('bob').lastName('dole');
console.log(x.fullName); // always undefined
根据我的评论,更改传递给defineProperty()
:的对象
var Person = function () {
var _firstName, _lastName
var _self = {
firstName: function (n) {
_firstName = n
return this
},
lastName: function (n) {
_lastName = n
return this
}
}
Object.defineProperty(_self, "fullName", {
get: function () {
return _firstName + ' ' + _lastName;
}
});
return _self;
}
var x = new Person().firstName('bob').lastName('dole');
console.log(x.fullName); // bob dole
http://jsfiddle.net/mattball/peztf9qs/
相关文章:
- 如何在Windows上用javascript构建本机应用程序
- 用javascript构建自定义的简单regex
- 用于计算产品价格的JavaScript构建和算法
- 选择一个支持ie8的javascript构建工具
- Javascript构建工具,用于在串联后更新脚本标记
- 播放连续的声音,用HTML5和javascript构建一个音频句子
- 用Javascript构建复杂的计算模型
- 如何使用CSS和JavaScript构建动态菜单
- 如何使用HTML5和Javascript构建Meego Mobile应用程序
- 尝试使用PHP / Javascript构建一个可点击的索引,该索引显示单击的每个项目的数据
- 使用 JavaScript 构建查询字符串
- 从javascript构建angularjs的ng-pattern
- 使用 .NET/C# 构建 Android 应用程序与使用 HTML/JavaScript 构建 Android 应用程
- JavaScript 构建多个临时变量
- 使用JavaScript构建远程托管应用程序
- 用Javascript构建多页应用程序的最佳方式
- 用JavaScript构建HTML表,从Acces DB到ADODB
- 使用javascript构建一个表
- 如何使用一行javascript构建器模式
- 使用javascript构建整个网页的缺点是什么