JS对象里的引用?

var obj = {
  aa: {
    bb: 2,
    cc: bb
  }
}

var obj = {
  aa: {
    bb: 2,
    cc: this.bb
  }
}

console.log(obj.aa.cc)

如上,cc引用了bb
但两种写法都会报错,请问如何取到到cc的值?谢谢~

阅读 2.1k
4 个回答

用了一点es6的语法。

var obj = {
  aa: {
    bb: 2,
    get cc(){return this.bb}
  }
}

你也可以调用Object.defineProperty()方法

var obj = {
  aa: {
    bb: 2
  }
}
Object.defineProperty(obj.aa,'cc',{
    get:function(){
    return this.bb
}
})

var obj = {
aa: {

bb: 2,
cc: function(){
    return this.bb
}

}
}

console.log(obj.aa.cc())

其实不推荐这么使用this,在上面例子中,this指向的是全局,自然找不到。
至于方法参考一楼二楼都可以

    var obj = {
      aa: {
        bb: 2,
        cc: bb
      }
    }//cc的值bb是一个变量,但是变量bb未声明直接当属性值用所以报错。
    //变量bb它和obj.aa.bb里的bb完全不是一个bb

    
 var obj = {
  aa: {
    bb: 2,
    cc: this.bb
  }
}//这里属性cc的值this.bb使用错误,你对this的用法理解有误,this只能在函数里面使用
//要实现在属性cc里取得bb需要使用----匿名函数实现
var obj = {
  aa: {
    bb: 2,
    cc: function() {return this.bb}
  }
}
console.log(obj.aa.cc());//2


撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题