1. function Person (sex){
    2. this.sex = sex;
    3. }
    4. Person.prototype.name = 'xiaoming';
    5. Person.prototype.sayName = function(){
    6. console.log(this.name)
    7. };
    8. let person1 = new Person('man');
    9. person1.age = 24;
    10. person1.job = 'chengxuyuan';
    11. Object.defineProperty(person1, "height", {value:185, enumerable:false});
    12. //Object.keys() 返回一个数组,包含对象自身及构造函数的所有可枚举属性,不包含原型上的属性(不含Symbol属性)
    13. Object.keys(person1).forEach(key=>{
    14. console.log(key,person1[key])
    15. })
    16. //sex man
    17. //age 24
    18. //job chengxuyuan
    19. //for..in.. 遍历包含对象自身及构造函数和原型上的所有可枚举属性(不含Symbol属性)
    20. for(let key in person1){
    21. console.log(key,person1[key])
    22. }
    23. //sex man
    24. // age 24
    25. // job chengxuyuan
    26. // name xiaoming
    27. // sayName [Function]
    28. //Object.getOwnPropertyNames() 返回一个数组,包含对象自身及构造函数的所有属性(包括可枚举的和不可枚举的,不包含Symbbol属性),不包含原型上的属性
    29. Object.getOwnPropertyNames(person1).forEach(key=>{
    30. console.log(key,person1[key])
    31. })
    32. // sex man
    33. // age 24
    34. // job chengxuyuan
    35. // height 185
    36. console.log(Object.getOwnPropertyNames(Person.prototype),'ad')
    37. //[ 'constructor', 'name', 'sayName' ] ad
    38. //person1.constructor 指向Peron
    39. console.log(person1.constructor) //[Function: Person]