javascript对象赋值不按预期工作

时间:2017-05-24 10:18:45

标签: javascript arrays

我有一个函数,我有一个赋值问题。

使用故障排除console.log语句看起来像这样:

function myfunc()
    {

  the_node = some_array; //with data.$color = #111111

    console.log('before: '+the_node.data["$color"]); //returns #111111
    console.log(the_node); //returns #111111 (at data.$color)

    the_node.data["$color"] = "#000000" ; //the assignment

    console.log('after: '+the_node.data["$color"]); //returns #000000
    console.log(the_node); //returns #111111 (should return #000000) (at data.$color)

  }

有趣的是,在控制台上我得到了变量' the_node.data。$ color'之前和之后返回的正确值。显示分配已经发生,但尚未在对象' the_node'中分配。

为什么会发生这种情况?

(以下是对象的内容' the_node'对象'数据')

$$family: "class"

Config: {$extend: false, overridable: true, type: "multipie", color: "#e6e6e6", alpha: 1, …}

Edge: {$extend: false, overridable: false, type: "none", color: "#ccb", lineWidth: 1, …}

Label: {$extend: false, overridable: true, type: "Native", style: " ", size: 10, …}

Node: {$extend: false, overridable: true, type: "multipie", color: "#e6e6e6", alpha: 1, …}

_angularWidth: 1

_depth: 1

_flag: true

_treeAngularWidth: 3.1666666666666665


angleSpan: {begin: 0, end: 2.7762911822421428}

constructor: function()

data: Object
$alpha: "1"
$color: "#87b13e"
$dim-quotient: 1
$label-size: 15
$span: 2.7762911822421428
class: "trait"
color: "#000000"
trait: "endurance"

Object Prototype

1 个答案:

答案 0 :(得分:0)

目前尚不清楚the_node实际包含哪一行:

     console.log(the_node); //returns #111111

如果以上一行无法正确:

     console.log('before: '+the_node.data["$color"]); //returns #111111

是对的吗?

尝试:

    console.dir(the_node);

这将导致显示the_node的全部内容,包括成员。

同时输入:

    console.log(typeof the_node);

查看它是否是一个物体。

注意:当用$前缀任何变量时,如果使用jquery'color'成为具有许多附加功能的对象,那么你不能简单地分配给$ color,你应该分配给$ color.value或者之类的东西。要分配给的对象的一部分。