variable binding inside an object

前端 未结 2 1001
借酒劲吻你
借酒劲吻你 2021-01-29 00:32

in this code below:

var a = 1;
var boat = { a:2, 
             innerBoat: {a:3, 
                        print(){console.log(a);},
                        },
            


        
相关标签:
2条回答
  • 2021-01-29 00:49

    In javascript, an object really is nothing more than a collection of data, like a dictionary in many other languages.

    var boat = new Object(); just creates an empty object, as if you did var boat = {};

    If you're looking for something more like , you may try using ES6 classes

    var a = 0
    class Boat {
      constructor() {
        this.a = 1;
      }
      print() {
        console.log(this.a);
      }
    }
    var boat = new Boat()
    boat.print();  //output: 2
    
    0 讨论(0)
  • 2021-01-29 00:57

    i don't understand why console.log(a); in print method returns the value 1.

    It logs the value of the variable a.

    The properties of the various objects around it which also have the name a are not variables. They can only be referenced as properties of an object.

    const a = 1;
    const object = {
        a: 2
    };
    
    console.log(a);
    console.log(object.a)


    See also How does the “this” keyword work? for how to access the property of an object that the method you are calling is attached to.


    Also, does the curly braces {} of the object referenced by boat creates a new private execution context in the stack at runtime ?

    No.

    0 讨论(0)
提交回复
热议问题