当前位置: 首页 > ds >正文

JavaScript 笔记 --- part7 --- JS进阶 (part2)

JS进阶(part2)

内置构造函数

  • Object: 用于创建对象

  • String: 用于创建字符串

  • Number: 用于创建数字

  • Array: 用于创建数组

  • Boolean: 用于创建布尔值

  • Function: 用于创建函数

  • Date: 用于创建日期对象

  • RegExp: 用于创建正则表达式对象

  • Error: 用于创建错误对象

  • Map: 用于创建 Map 对象

  • Set: 用于创建 Set 对象

  • WeakMap: 用于创建弱 Map 对象

  • WeakSet: 用于创建弱 Set 对象

  • JSON: 用于将对象转换为 JSON 字符串

const str = "Hello, world!";
const strObj = new String(str); // 两者等价

Object

const obj = {name: "John",age: 25,
};const arr = Object.keys(obj); // 获取对象所有属性名
const arr1 = Object.values(obj); // 获取对象所有属性值
const arr2 = Object.entries(obj); // 获取对象所有属性名和值const obj1 = Object.assign({}, obj); // 复制对象
Object.assign(obj, { gender: "male" }); // 追加属性

对象

创建对象(构造函数)

// 通过new关键字创建对象
const person = new Object();// 构造函数创建对象
function Person(name, age) {this.name = name;this.age = age;
}const person1 = new Person("John", 25); //实例化对象
  • 构造函数: 主要用来初始化对象

  • 使用场景: 快速创建多个类似的对象

  • 约定语法: 首字母大写的函数名表示构造函数

  • 构造函数的 this: 指向新创建的对象

实例成员

  • 定义: 通过构造函数创建的对象称为实例对象, 实例对象中的属性和方法称为实例成员

  • 说明:

    1. 为构造函数传入参数, 创建结构相同但值不同的对象
    2. 构造函数创建的实例对象彼此独立互不影响

静态成员

  • 定义: 静态成员是指构造函数本身的属性和方法

  • 说明:

    1. 静态成员属于构造函数, 所有实例对象共享同一份静态成员
    2. 静态成员可以直接通过构造函数访问, 而不需要实例化对象
function Person(name, age) {this.name = name;this.age = age;this.sayAge = function () {console.log(`I am ${this.age} years old`);};
}Person.sayHello = function () {console.log(`Hello, my name is ${this.name}`);
};

字符串

split()

  • 定义: 将字符串按照指定分隔符分割成数组, 与数组的 join() 方法相反
const str = "Hello, world!";
const arr = str.split(","); // ["Hello", " world!"]

substring()

  • 定义: 返回一个字符串中从 start 位置到 end 位置的子字符串, 索引从 0 开始, 包含 start, 不包含 end
const str = "Hello, world!";
const subStr = str.substring(2, 7); // "llo, "

startsWith()

  • 定义: 判断字符串是否以指定字符串开头, 返回布尔值
const str = "Hello, world!";
const result = str.startsWith("Hello"); // true

endsWith()

  • 定义: 判断字符串是否以指定字符串结尾, 返回布尔值
const str = "Hello, world!";
const result = str.endsWith("!"); // true

includes()

  • 定义: 判断字符串是否包含指定字符串, 返回布尔值
const str = "Hello, world!";
const result = str.includes("world"); // true

repeat()

  • 定义: 重复字符串 n 次, 返回重复后的字符串
const str = "Hello";
const result = str.repeat(3); // "HelloHelloHello"

padStart()

  • 定义: 在字符串左侧填充指定字符, 直到字符串长度达到指定长度
const str = "Hello";
const result = str.padStart(10, " "); // "     Hello"

padEnd()

  • 定义: 在字符串右侧填充指定字符, 直到字符串长度达到指定长度
const str = "Hello";
const result = str.padEnd(10, " "); // "Hello     "

数字

toFixed()

  • 定义: 将数字转换为字符串, 并添加指定小数位数的小数点(四舍五入)
const num = 123.456;
const result = num.toFixed(2); // "123.46"

编程思想

面向过程

  • 定义: 面向过程是一种编程思想,强调通过过程来解决问题。
  • 特点: 按照步骤一步一步的执行,逐个解决问题。
  • 适用场景: 适用于简单的程序,或者对性能要求较高的程序。
  • 优点: 代码的可读性、可理解性都得到提高。
  • 特性: 数据封装、数据隐藏、信息隐藏。
  • 缺点: 代码的可维护性、可扩展性、灵活性都有所欠缺。

面向对象

  • 定义: 面向对象是一种编程思想,强调通过对象来解决问题。
  • 特点: 按照对象来思考问题,将问题分解成对象,每个对象都有自己的属性和方法。
  • 适用场景: 适用于复杂的程序,或者对可扩展性要求较高的程序。
  • 优点: 代码的可维护性、可扩展性、灵活性都得到提高。
  • 特性: 封装、继承、多态。
  • 缺点: 代码的可读性、可理解性都有所欠缺。

原型

构造函数

  • 定义: 构造函数是一种特殊的函数,它在创建对象时被调用。
  • 它体现了面向对象编程的特点,它可以为对象创建初始状态,并为对象添加属性和方法。
function Person(name, age) {this.name = name;this.age = age;this.sayHello = function () {console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");};const person1 = new Person("John", 25);person1.sayHello(); // Output: Hello, my name is John, I am 25 years old.
}

原型对象

  • 定义: 原型是一种特殊的对象,它包含了所有实例对象的共有属性和方法。
  • 它体现了面向对象编程的另一种特点,它可以让对象共享属性和方法。
  • this 关键字在构造函数中指向实例对象,在原型对象中也指向
    实例对象。
function Person(name, age) {this.name = name;this.age = age;
}Person.prototype.sayHello = function () { // 原型对象: prototypeconsole.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");
};const person1 = new Person("John", 25);
person1.sayHello(); // Output: Hello, my name is John, I am 25 years old.const person2 = new Person("Mary", 30);
person2.sayHello(); // Output: Hello, my name is Mary, I am 30 years old.
  • constructor 属性指向构造函数。
function Person(name, age) {this.name = name;this.age = age;
}Person.prototype = {constructor: Person, // 在使用赋值方式时,需要添加constructor属性来指向构造函数, 注意不要漏掉逗号sayHello: function () {console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");},
};Person.prototype.SayHello = function () {console.log("Hello, my name is " + this.name + ", I am " + this.age + " years old.");
}; // 原型对象中添加方法, 此时不需要添加constructor属性

对象原型

  • 定义: 对象都会有一个属性__proto__,它指向构造函数的prototype原型对象。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • prototype: 构造函数的原型对象

  • constructor: 指向构造函数

  • proto: 在实例对象上指向原型对象(prototype)

原型继承

  • 作用: 不使用同一个对象, 但是不同对象里面有相同的方法和属性, 这样就可以节省内存空间。

function Person(name, age) {this.name = name;this.age = age;
}function Woman(){};
function Man(){};Man.prototype = new Person(); // 原型继承
Woman.prototype = new Person(); // 原型继承

原型链

  • 定义: 原型链是一种对象之间的关系,它通过__proto__属性连接起来。

  • 它体现了面向对象编程的第三种特点,它可以让对象调用另一个对象的属性和方法。

  • 规则:

    1. 只要是对象就有__proto__属性, 这个属性指向它的原型对象。
    2. 只要是原型对象, 它都有constructor属性, 这个属性指向它的构造函数。

instanceof 运算符

  • 作用: 用来判断一个对象是否是另一个对象的实例。

function Person(name, age) {this.name = name;this.age = age;
}const person1 = new Person("John", 25);console.log(person1 instanceof Person); // true
console.log(person1 instanceof Object); // true
console.log(person1 instanceof Array); // false
http://www.xdnf.cn/news/4170.html

相关文章:

  • 【信息系统项目管理师-论文真题】2008上半年论文详解(包括解题思路和写作要点)
  • Python生活手册-NumPy数组创建:从快递分拣到智能家居的数据容器
  • 互联网大厂Java求职面试:AI大模型与云原生架构设计深度解析
  • 【学习心得】Xtuner模型qlora微调时错误记录
  • 【嘉立创EDA】FPCB(Flexible-PCB)柔性软板设计如何增加补强层
  • 反常积分(广义积分)
  • Redis总结(六)redis持久化
  • C++ 适配器模式详解
  • Java中使用Lock简化同步机制
  • 安装SDL和FFmpeg
  • 强化学习ppo算法在大语言模型上跑通
  • [ 设计模式 ] | 单例模式
  • Android学习总结之GetX库篇(场景运用)
  • 智能合约在去中心化金融(DeFi)中的核心地位与挑战
  • 机器学习中常见搜索算法
  • 代码随想录算法训练营第三十二天
  • Scrapy爬虫实战:如何用Rules实现高效数据采集
  • STM32教程:DMA运用及代码(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • Vue3响应式原理那些事
  • PyTorch 张量与自动微分操作
  • 研0大模型学习(第12天)
  • 《深入理解 Java 虚拟机》笔记
  • 三、【LLaMA-Factory实战】模型微调进阶:从LoRA到MoE的技术突破与工程实践
  • 一文读懂Python之pandas模块
  • Vite简单介绍
  • 亚马逊卖家复刻案例:用社群分层策略实现海外用户月均消费3.2次
  • 普通消元求解线性基并求解最大异或和
  • 【论文笔记】SOTR: Segmenting Objects with Transformers
  • 机器人强化学习入门学习笔记
  • 有效的数独(中等)