【问题标题】:Custom getter for the whole object, not only properties?整个对象的自定义吸气剂,而不仅仅是属性?
【发布时间】:2013-02-10 21:27:28
【问题描述】:

我可以将get 用于单个属性,如下所示:

function MyObjectConstructor() {
    this._internalValueOne = 'foo';
    this._internalValueTwo = 'bar';
}

MyObjectConstructor.prototype = {
    get usefulValueOne() {
        return this._internalValueOne + 'baz';
    },
    get usefulValueTwo() {
        return this._internalValueTwo + 'baz';
    }
}

var myObject = new MyObjectConstructor();

现在myObject.usefulValueOne 提供'foobaz'myObject.usefulValueTwo 提供'barbaz'。我能否以某种方式使用get 来确保myObject(以及任何其他基于MyObjectConstructor 的对象)也返回像{usefulValueOne: 'foobaz', usefulValueTwo: 'barbaz'} 这样的对象?或者有其他首选方法吗?

当然,我也想知道 set 是否有同样的事情。

【问题讨论】:

    标签: javascript oop constructor setter getter


    【解决方案1】:

    你可以用这个:

    function MyObjectConstructor() {
        this._internalValueOne = 'foo';
        this._internalValueTwo = 'bar';
    }
    
    MyObjectConstructor.prototype = {
        get usefulValueOne() {
            return this._internalValueOne + 'baz';
        },
        get usefulValueTwo() {
            return this._internalValueTwo + 'baz';
        },
        get showProt(){
            var B = {};
            for (var i in this){
                if (i.hasOwnProperty && (i !== 'showProt')){
                    B[i] = this[i];
               }
            }
            return B;
        }
    }
    var myObject = new MyObjectConstructor();
    

    现在 myObject.showProp 将向您显示一个具有所有属性的对象(包括私有属性,您应该删除它们)

    【讨论】:

      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多