代码之家  ›  专栏  ›  技术社区  ›  efw

从对象构造函数向现有的javascript对象添加属性

  •  1
  • efw  · 技术社区  · 6 年前

    在javascript中创建对象构造函数时,我理解有必要在属性名称前面加上“this”关键字。

    function funcConstruct(first,last,age) {
            this.firstName = first;
            this.lastName = last;
            this.age = age;
            this.fullNameAge = function() {
                return this.lastName + ', ' + this.firstName + ', ' + this.age
            };
    };
    
    
    var johnDoe = new funcConstruct('John', 'Doe', 52);
    console.log(johnDoe.fullNameAge()); 
    Doe, John, 52
    

    如果您希望以后向对象添加其他属性,是否需要使用“this”关键字,如果需要,它在语法中的位置是什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   joshweir Raveena    6 年前

    您可以在以下事实之后添加其他属性:

    function funcConstruct(first,last,age) {
        this.firstName = first,
        this.lastName = last,
        this.age = age,
        this.fullNameAge = function() {
            return this.lastName + ', ' + this.firstName + ', ' + this.age
        }
    };
    
    
    var johnDoe = new funcConstruct('John', 'Doe', 52);
    johnDoe.foo = "bar";
    

    您使用的是函数构造器模式,但是请注意,根据您的用例,您可以使用其他的JavaScript对象封装模式,有些模式比其他模式更好。在我看来,只有在使用ES6之前的版本时,我才会使用函数构造函数模式,如果使用>=ES6(ES2015),我会使用 class 只有当我需要对象的一堆实例时。否则,我宁愿使用 revealing module pattern 如果只需要对象的一个实例。利用乐趣

    没有用重新发明轮子,公认的答案和其他一些高投票率的答案 this question 做一个好的总结。 This video 解释有关使用 this 在javascript中,提供了一种观点,认为最好避免 在可能的情况下。