'use strict'; // 父类 function Fruit(){ } Fruit.prototype.name = '水果'; // 子类 function Apple(desc){ this.desc = desc; } // 继承 var fruit = new Fruit(); fruit[Symbol('level')] = 'A级'; Apple.prototype = fruit; fruit.constructor = Apple; var apple = new Apple('红富士'); apple[Symbol('color')] = '红色'; // 只能获取子类对象特有的属性,不能获取从父类继承的属性 console.log('apple.hasOwnProperty("name")',apple.hasOwnProperty('name')); // false console.log('apple.hasOwnProperty("desc")',apple.hasOwnProperty('desc')); // true console.log('Object.getOwnPropertyNames',Object.getOwnPropertyNames(apple)); // ["desc"] console.log('Object.getOwnPropertyDescriptor(apple,"name")',Object.getOwnPropertyDescriptor(apple,'name')); // undefined console.log('Object.getOwnPropertyDescriptor(apple,"desc")',Object.getOwnPropertyDescriptor(apple,'desc')); // Object{...} console.log('Object.getOwnPropertySymbols(fruit)',Object.getOwnPropertySymbols(fruit)); // [Symbol(level)] console.log('Object.getOwnPropertySymbols(apple)',Object.getOwnPropertySymbols(apple)); // [Symbol(color)]