JS学习 st11

构造函数:

  1. 创建对象:当需要创建具有相似特性的多个对象时,可以使用构造函数模板创建这些对象。
  2. 初始化属性:构造函数可以在对象创建时初始化对象的属性,确保对象具有合适的初始状态。
  3. 封装代码逻辑:构造函数可以用来封装相关的代码逻辑,便于对象的管理和维护。

使用方法:

  1. 定义构造函数:使用function关键字定义一个构造函数,并在其中定义对象的属性和方法。
  2. 初始化属性:在构造函数内部使用this关键字来设置对象的属性。
  3. 创建对象实例:使用new关键字加上构造函数的名称来创建对象实例,构造函数会被调用并执行对象的初始化操作。

 new关键字实例化对象

  1. 创建一个新对象:new关键字创建一个新的空对象,这个新对象会成为实例化的对象。

  2. 设置对象的原型链连接:新创建的对象会被连接到其构造函数的原型对象上。可以通过构造函数的prototype属性来访问原型对象。

  3. 将构造函数的作用域赋给新对象:在构造函数内部,使用this关键字引用新创建的对象。这样可以在构造函数中访问并设置新对象的属性。

  4. 执行构造函数:构造函数会被调用,并在新对象上执行,可以在构造函数中为新对象设置属性和执行其他必要的操作。

  5. 返回新对象:如果构造函数中没有显式返回一个对象,则new操作符会隐式返回新创建的对象。

实例成员:


       实例成员是指属于类的每个对象实例的成员,也称为实例属性或实例方法。每个对象实例都有自己的实例成员副本,它们独立于其他对象实例。实例成员通常存储对象的特定属性值,并且可以通过对象实例访问和操作。

class Person {
  constructor(name, age) {
    this.name = name; // 实例属性
    this.age = age; // 实例属性
  }
  
  introduce() { // 实例方法
    console.log(`My name is ${this.name} and I am ${this.age} years old.`);
  }
}

const person1 = new Person('Alice', 25);
const person2 = new Person('Bob', 30);

person1.introduce(); // 输出: My name is Alice and I am 25 years old.
person2.introduce(); // 输出: My name is Bob and I am 30 years old.

静态成员:


       静态成员是指属于类本身而非类的实例的成员,也称为静态属性或静态方法。静态成员在类的定义级别上定义,且被所有对象实例所共享。静态成员通常用于表示与整个类相关的数据或功能,不依赖于特定的对象实例。

class MathUtils {
  static pi = 3.14; // 静态属性
  
  static calculateCircleArea(radius) { // 静态方法
    return this.pi * radius * radius;
  }
}

console.log(MathUtils.pi); // 输出: 3.14
console.log(MathUtils.calculateCircleArea(5)); // 输出

  1. String 对象

    • length: 返回字符串的长度。
    • charAt(index): 返回给定位置的字符。
    • indexOf(substring): 返回指定子字符串在原字符串中第一次出现的位置。
    • toUpperCase(): 将字符串转换为大写字母形式。
    • split(separator): 将字符串拆分为数组,按照指定的分隔符进行拆分。

const str = "Hello, World!";
console.log(str.length); // 输出: 13
console.log(str.charAt(0)); // 输出: H
console.log(str.indexOf('World')); // 输出: 7
console.log(str.toUpperCase()); // 输出: HELLO, WORLD!
console.log(str.split(', ')); // 输出: ["Hello", "World!"]
 

  1. Number 对象:

    • toFixed(digits): 将数字转换为字符串,保留指定位小数。
    • toString(): 将数字转换为字符串。
    • parseInt(): 将字符串转换为整数。
    • parseFloat(): 将字符串转换为浮点数。

const num = 3.14159;
console.log(num.toFixed(2)); // 输出: "3.14"
console.log(num.toString()); // 输出: "3.14159"
console.log(parseInt("10")); // 输出: 10
console.log(parseFloat("3.14")); // 输出: 3.14
 

  1. Boolean 对象:

    • valueOf(): 返回 Boolean 对象的原始布尔值。
    • toString(): 将布尔值转换为字符串。

const bool = new Boolean(true);
console.log(bool.valueOf()); // 输出: true
console.log(bool.toString()); // 输出: "true 

在 JavaScript 中,构造函数可以用来创建对象,并通过封装数据和方法来实现封装。封装是面向对象编程的基本概念之一,通过封装,我们可以将数据和行为(方法)封装在对象内部,同时隐藏对象的实现细节,只暴露必要的接口供外部调用。构造函数中的属性(数据)和方法(行为)可以通过 this 关键字绑定到新创建的对象上,实现了封装的效果。

下面是一个示例 :

function Person(name, age) {
  this.name = name;
  this.age = age;

  this.sayHello = function() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  };
}

const person1 = new Person("Alice", 30);
person1.sayHello(); // 输出: Hello, my name is Alice a

封装也存在一些问题:

数据隐私性问题

方法冗余问题

无法实现真正的私有方法

原型对象

  • 在 JavaScript 中,每个对象都有一个原型对象,它是一个普通的对象。
  • 原型对象用于共享属性和方法,供该对象的所有实例访问和继承。
  • 对象可以通过 Object.create() 方法指定原型对象,或者通过构造函数及其 prototype 属性进行关联。

构造函数

  • 构造函数是用于创建对象的特殊函数,通过 new 关键字调用。
  • 构造函数定义了对象的初始状态和行为。
  • 通过构造函数创建的对象实例会自动关联到该构造函数的 prototype 属性指向的原型对象,实现继承。

对象原型链

  • 对象原型链是一种通过原型对象实现的链式查找机制,用于属性和方法的继承。
  • 每个对象都拥有一个 __proto__ 属性,指向其原型对象。
  • 当访问对象属性或方法时,如果对象本身没有,则沿着原型链向上查找,直到找到匹配的属性或方法或到达原型链末尾(null)。

原型继承

  • 原型继承是 JavaScript 中的一种继承方式,它通过对象的原型链进行继承。
  • 当一个对象被用作另一个对象的原型时,它们之间就建立了一种原型继承关系。
  • 原型继承的特点是,子对象可以访问和继承原型对象的属性和方法。
  • JavaScript 中,可以使用 Object.create() 方法或通过构造函数的 prototype 属性来实现原型继承。

原型链

  • 原型链是一种对象与原型对象之间形成的链式关系。
  • 每个对象都有一个 __proto__ 属性,指向它的原型对象。
  • 通过原型链,一个对象可以访问和继承其原型对象的属性和方法,也可以继续向上查找原型对象的原型,形成一条链式关系,直到最终的原型对象为 null

instanceof 运算符

  • instanceof 是 JavaScript 中的一个运算符,用于检查一个对象是否是某个特定类(或者是其派生类)的实例。
  • 运算符的语法为 object instanceof constructor,其中 object 是待检查的对象,constructor 是特定的构造函数。
  • 如果 object 是 constructor 或其派生类的实例,则返回 true,否则返回 false

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值