我有一个名为DummyObject的对象,其中包含一个名为' value'我是 试图通过函数" assignValue'来分配值。但是在我尝试分配之后它显示为undefined。我假设在" assignValue'功能' v'应指向' this.value'当我指定它时,它应该更新' this.value'。
function DummyObject(){
this.value;
}
DummyObject.prototype.assignValue = function(val){
var v = this.value;
v = {val: val};
}
var dObj = new DummyObject();
dObj.assignValue(23);
console.log(dObj);

答案 0 :(得分:2)
保留对象的引用,但realloc();
未定义(非对象),因此它不会像你想象的那样工作。使用对象初始化它,并通过修改特定属性来工作。
this.value
但是,最好的方法是直接修改function DummyObject() {
this.value = {};
}
DummyObject.prototype.assignValue = function(val) {
var v = this.value;
v.val = val;
}
var dObj = new DummyObject();
dObj.assignValue(23);
console.log(dObj); // {value: {value: 23}}
。
this.value
答案 1 :(得分:1)
JavaScript中的变量无法正常工作。使用
创建变量v
时
var v = this.value;
您创建的内容完全独立于this.value
,而不是this.value
的别名。如果您想更改this.value
,则必须直接更改。
this.value = {val: val};
答案 2 :(得分:0)
如果您曾说过:
,JS不会保留您的指针 thing = newThing
您的本地变量v
不再指向this.value,因此只需完全删除该变量即可。如果你想设置一堆东西,你可以使用一个对象,它通过引用传递:
function DummyObject() {
this.value;
}
DummyObject.prototype.assignValue = function(val) {
var v = this.value = { val: val };
v.somethingElse = 'someData';
}
答案 3 :(得分:0)
查看prototype.toString
以制作自定义对象值。我认为可能存在问题,因为我没有经常使用它。您可能希望使用dObj.value
来避免任何问题。
function DummyObject(){
this.value;
}
DummyObject.prototype.assignValue = function(val){
this.value = val;
};
DummyObject.prototype.toString = function() {
return this.value;
};
var dObj = new DummyObject();
dObj.assignValue(23);
var out = document.getElementById('out');
out.innerHTML += dObj;
<pre id="out"></pre>