关于this的问题

        var obj={
            a:1,
            b:2,
            c:{
                aa:2222,
                close:function () {
                    console.log("close");
                },
                open:function (argument) {
                    console.log(this.aa);
                    //这时 this指向c,我想调用 b属性,而不想用obj.b,怎么写?
                }

            }
        }
阅读 2.1k
3 个回答
新手上路,请多包涵

应该在调用open函数的使用将this绑定到obj上

        var obj={
            a:1,
            b:2,
            c:{
                aa:2222,
                open:function () {
                    console.log("open");
                },
                open:function (argument) {
                    console.log(this.b); 
                    //这里写this.b
                }

            }
        }
        
        //调用open函数并把this绑定到obj对象上
        obj.c.open.call(obj)  //2
       

bind绑定this即可。

var obj={
            a:1,
            b:2,
            c:{
                aa:2222,
                open:function () {
                    console.log("open");
                },
                open:function (argument) {
                    console.log(this.a);
                    //这时 this指向c,我想调用 b属性,而不想用obj.b,怎么写?
                }.bind(obj)

            }
        }
        obj.c.open() // 1
        var obj={
            a:1,
            b:2,
            c:{
                aa:2222,
                parentB: this.b
                open:function () {
                    console.log("open");
                },
                open:function (argument) {
                    console.log(this.parentB);
                    //这时 this指向c,我想调用 b属性,而不想用obj.b,怎么写?
                }

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