jsのdefineProperty方法
2950 ワード
function defineGetter(obj, name, getter) {
Object.defineProperty(obj, name, {
configurable: true,
enumerable: true,
get: getter
});
};
express
においてdefineProperty
の使用が見られ、S 5はObject.defineProperty()
によってオブジェクト自体のあるpropertyの属性を設定することができる.Object.defineProperty(object, propertyname, descriptor)
#object,
#propertyname,
#descriptor,
#descriptor
/**
* @{param} descriptor
*/
{
configurable: false, // , writable 、 enumerable 、 configurable 。
enumerable: false, // , for...in , Object.keys()
writable: false, //
value: null, //
set: undefined, // ,
get: undefined // ,
}
var req = {
protocol:"https"
};
Object.defineProperty(req, "secure",{
configurable: true,
enumerable: true,
get: function(){return this.protocol === 'https';}
});
しかし、もう一つの注意が必要です.Object.defineProperty()
方法で属性を設定した場合、アクセス属性set get
とWritableまたはvalue属性は同時に宣言できません.つまり、ある属性にwritable
またはvalue属性が設定されていると、この属性はgetとsetを宣言できなくなり、逆もまた然りであるということです.Object.defineProperty()
は、一つの属性を宣言するとき、同じ属性に二つ以上のアクセス制御が発生することが許されないからです.#
#Object.getOwnPropertyDescriptor(object, propertyname);
var descriptor = Object.getOwnPropertyDescriptor(req, "secure");
{ get: [Function],
set: undefined,
enumerable: true,
configurable: true }