整个对象的自定义getter,不仅是属性?

时间:2013-02-10 21:27:28

标签: javascript oop constructor setter getter

我可以将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感到奇怪。

1 个答案:

答案 0 :(得分:0)

你可以用这个:

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将显示一个包含所有属性的对象(包括私有,你应该删除它们)