Determine if a JavaScript property has a getter or setter defined?

前端 未结 5 2046
刺人心
刺人心 2020-12-01 09:58

Is it possible, given an object and property name to determine if that property is defined using either a getter or setter, or is it completely transparent? I only want to d

5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-01 11:04

    You can use Object.getOwnPropertyDescriptor(obj, prop)

    For example:

    var obj = { first: 1 }
    obj.__defineGetter__('second', function() { return 2; });
    
    // get descriptors
    var descriptor1 = Object.getOwnPropertyDescriptor(obj, 'first');
    var descriptor2 = Object.getOwnPropertyDescriptor(obj, 'second');
    
    // check if it's a getter
    
    descriptor2.get
    // returns function () { return 2; }
    
    descriptor1.get
    // returns undefined
    

提交回复
热议问题