为函数对象赋值

时间:2015-10-05 22:35:42

标签: javascript object prototype

我有一个名为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);




4 个答案:

答案 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>