Skip to content

原型方法

Object.prototype 方法

1. 基础方法

javascript
// toString() - 返回对象的字符串表示
const obj = { name: 'John' };
console.log(obj.toString()); // '[object Object]'

// valueOf() - 返回对象的原始值
const date = new Date();
console.log(date.valueOf()); // 时间戳

// hasOwnProperty() - 检查对象是否具有指定的自身属性
const person = { name: 'John' };
console.log(person.hasOwnProperty('name')); // true
console.log(person.hasOwnProperty('toString')); // false

// isPrototypeOf() - 检查一个对象是否存在于另一个对象的原型链中
const animal = { eat() {} };
const dog = Object.create(animal);
console.log(animal.isPrototypeOf(dog)); // true

2. 属性描述符方法

javascript
// getOwnPropertyDescriptor() - 获取对象属性的描述符
const obj = { name: 'John' };
const descriptor = Object.getOwnPropertyDescriptor(obj, 'name');
console.log(descriptor);
// {
//   value: 'John',
//   writable: true,
//   enumerable: true,
//   configurable: true
// }

// getOwnPropertyDescriptors() - 获取对象所有属性的描述符
const descriptors = Object.getOwnPropertyDescriptors(obj);
console.log(descriptors);

// defineProperty() - 定义或修改对象属性
Object.defineProperty(obj, 'age', {
    value: 30,
    writable: true,
    enumerable: true,
    configurable: true
});

3. 原型链方法

javascript
// getPrototypeOf() - 获取对象的原型
const animal = { eat() {} };
const dog = Object.create(animal);
console.log(Object.getPrototypeOf(dog) === animal); // true

// setPrototypeOf() - 设置对象的原型
const cat = {};
Object.setPrototypeOf(cat, animal);
console.log(Object.getPrototypeOf(cat) === animal); // true

原型方法的最佳实践

  1. 使用 hasOwnProperty() 检查自身属性
  2. 使用 Object.getPrototypeOf() 获取原型
  3. 使用 Object.setPrototypeOf() 设置原型
  4. 使用 Object.defineProperty() 定义属性特性
  5. 使用 Object.getOwnPropertyDescriptor() 获取属性描述符
  6. 使用 Object.getOwnPropertyDescriptors() 获取所有属性描述符
  7. 使用 Object.create() 创建带有指定原型的对象
  8. 使用 Object.assign() 合并对象属性