Getters and Setters in a function (javascript)

后端 未结 3 501
悲&欢浪女
悲&欢浪女 2021-01-12 16:08

When using get in an object like this, get works:

var people = {
  name: \"Alex\",
  get say         


        
相关标签:
3条回答
  • 2021-01-12 16:27

    For example, use this:

    function People2() {
      this.name = "Mike";
      this.__defineGetter__("sayHi", function() {
        return `Hi, ${this.name}!`;
      });
    };
    
    0 讨论(0)
  • 2021-01-12 16:35

    You can try this

    <script>
    function People2(name) {
      this.name = name;  
    };
    
    People2.prototype = {
      get sayHi() {
        return `Hi, ${this.name}!`;}
    };
    
    var user = new People2('Alex');
    
    document.write(user.sayHi);
    </script>

    or this one...

    <script>
    function people(name) {
        this.name = name;
    };
    
    Object.defineProperty(people.prototype, 'sayHi', {
        get: function() { return `Hi, ${this.name}!`; }
    });
    
    var person = new people('Alex');
    
    document.write(person.sayHi);
    </script>

    0 讨论(0)
  • 2021-01-12 16:38

    You can use the actual get and set keywords only in classes (ES2015) and object literals.

    ECMAScript 5

    In ES5, your would typically use Object.defineProperty to implement what you're trying to achieve:

    function People2() {
        this.name = "Mike";
    }
    Object.defineProperty(People2.prototype, "sayHi", {
        get: function() {
            return "Hi, " + this.name + "!";
        }
    });
    

    ECMAScript 2015

    In ES2015, you could also use classes to achieve the desired behavior:

    class People2 {
        constructor() {
            this.name = "Mike";
        }
        get sayHi() {
            return `Hi, ${this.name}!`;
        }
    }
    
    0 讨论(0)
提交回复
热议问题