JavaScript中的Getter/Setter方法只能用对象字面量的形式来指定吗?能否用其他形式来指定?

zhoupc88 2016-07-12 12:06:52

JavaScript中的Getter/Setter方法只能用下面所示的这种对象字面量的形式来指定吗?

function Person() {
this._name;
}

Person.prototype = {
constructor: Person,
get name() {return this._name;},
set name(value) {this._name = value;}
}

能否不用对象对面量的形式来指定?例如像下面这样?(然而经测试得知下面这样是不行的,不合语法)

function Person() {
this._name;
}

Person.prototype.get name = function() {return this._name;};
Person.prototype.set name = function(value) {this._name = value;};


另外,能否将
this._name;
替换成
var _name;
以实现模拟私有变量的效果呢(只对外开放公有访问方法)?把上述代码改写成这样——(然而经测试得知下面这样是不行的:给对象的一个实例设置属性值后,所有实例都将得到相同的属性值,而不是各自具有不同的属性值)

function Person() {
var _name;

if (typeof this.getName != "function") {
Person.prototype.getName = function() {return _name;};
Person.prototype.setName = function(value) {_name = value;};
}
}

那么,应该怎样才能实现这样的目的呢?
...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
NANU-NANA 2016-07-12
  • 打赏
  • 举报
回复
看看这个 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript 另外再看一下变量 作用域。
zhoupc88 2016-07-12
  • 打赏
  • 举报
回复
引用 1 楼 u010087908 的回复:
一个是object的属性 一个是function里的变量 你想想区别是啥。
还是没有理解
NANU-NANA 2016-07-12
  • 打赏
  • 举报
回复
一个是object的属性 一个是function里的变量 你想想区别是啥。

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧