面向对象-对象和属性描述符详解(一)

面向对象编程

面向对象编程是一种使用包含数据和行为的对象来模拟现实世界实体的编程范式。这种方法便于封装、继承和多态性,代码更易管理、复用和扩展

  • 在JS当中所体现的主要来源于封装和继承,封装在日常处处都会用到,我们使用函数方法就是一种封装

  • 继承则是我们的重点,原型链的概念就来自于继

  • 创建对象的方式

  • new Object()
    new Object() 是 JavaScript 的原生构造函数,调用时会创建一个空对象并返回该对象:

let obj = new Object() // 创建一个对象
obj.name = 'zhangsan' // 给对象添加属性和方法
obj.sayName = function(){
   
    // 给对象添加方法
    console.log(this.name) // this指向当前对象
}
obj.sayName() // 调用方法
  • 字面量方式创建对象
    最简洁直观的方式,适合定义单例对象或简单数据结构
let obj = {
   
    // 创建一个对象
    name: 'zhangsan', // 添加属性和方法
    sayName: function(){
   
    // 添加方法
        console.log(this.name) // this指向当前对象
    }
}
obj.sayName() // 调用方法
  • 工厂函数
    工厂函数是一种创建对象的函数,返回一个新对象而不是使用 this,无法使用 instanceof 检查类型,无法使用原型链
function createPerson(name, age) {
   
   
  return {
   
   
    name,
    age,
    greet() {
   
   
      console.log(`Hello, ${
     
     this.name}!`);
    }
  };
}
const bob = createPerson('Bob', 25);
bob.greet(); // 输出: Hello, Bob!
  • Object.create()
    Object.create() 方法用于创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。
let obj = Object.create(null) // 创建一个对象,原型为null
obj.name = 'zhangsan' // 添加属性和方法
obj.sayName = function(){
   
    // 添加方法
    console.log(this.name) // this指向当前对象
}
obj.sayName() // 调用方法

const proto = {
   
   
greet() {
   
   
    console.log(`Hello, ${
     
     this.name}!`);
}
};
const john = Object.create(proto);
john.name = 'John'; // 添加自身属性
john.greet(); // 输出: Hello, John!

  • 构造函数
    构造函数是一种特殊的函数,用于创建和初始化对象。在 JavaScript 中,构造函数通常以大写字母开头,用于区分普通函数。
    通过 new 调用函数创建对象实例,适合批量生成结构化对象
function Person(name, age) {
   
   
  this.name = name;
  this.age = age;
}
Person.prototype.greet = function() {
   
   
  console.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值