【发布时间】:2016-04-28 10:54:05
【问题描述】:
我正在尝试将对象设为私有,但不知道该怎么做。如您所见,名称变量是私有的,我无法对其进行编辑,但是当涉及到我返回的对象时,我可以进行编辑。不过,我不希望这成为可能。 我对javascript中的面向对象和私有方法很陌生,所以有人可以告诉我这里什么是对什么错。 :) 我该如何解决这个问题? 谢谢!
var User = function() {
var name = 'bob';
this.getName = function() {
return name;
}
var otherInfo = {
age: 20,
human: true,
}
this.getOther = function() {
return otherInfo;
}
}
var person = new User();
var name = person.getName();
name = 'jenny';
console.log(person.getName()); // bob
var other = person.getOther();
other.age = 'wtf?';
console.log(person.getOther()); // { age: 'wtf?', human: true }
【问题讨论】:
-
如果你不想改变
person.getOther()的返回值来改变otherInfo的值,那么你需要返回一份副本。
标签: javascript private-members