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

前端 未结 5 2043
刺人心
刺人心 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:03

    Object.defineProperty's get or set Method default value will be undefined if its not defined in the descriptor. This is ideal way to identify.

    Let's say example:

    var User = {};
    
    Object.defineProperty(User, 'name', {
        get: function () {
            return _name;
        },
        enumerable: true
    });
    
    Object.defineProperty(User, 'designation', {
        get: function () {
            return _designation;
        },
        set: function (val) {
            _designation = val;
        },
        enumerable: true
    });
    
    
    var d = Object.getOwnPropertyDescriptor(User, 'name');
    console.log(d.set == undefined);
    

    Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

提交回复
热议问题