JavaScript 构造函数及内置构造函数的详解

在JavaScript中,构造函数是一种特殊的函数,用于初始化对象。当使用new关键字调用构造函数时,它会创建一个新的对象实例,并将构造函数内部的this关键字绑定到这个新对象上。构造函数通常用于定义对象的属性和方法,以及创建对象的实例。

1. 构造函数的定义和调用

  • 构造函数通常以大写字母开头,以便与普通函数区分。
  • 它们可以包含属性和方法,这些属性和方法通过this关键字添加到新创建的对象上。
  • 调用构造函数时,需要使用new关键字,这样可以确保this正确地指向新创建的对象实例。
  • 构造函数内部无需写return,返回值即为新创建的对象。
function Person(name, age) {
    this.name = name;
    this.age = age;
}

var person1 = new Person('Alice', 25);

2. 实例成员&静态成员

  • 实例成员:通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员。
  • 静态成员:构造函数的属性和方法被称为静态成员
function Person(name, age) {
    this.name = name; // 实例成员
    this.age = age; // 实例成员
}

// 静态成员
Person.species = 'Homo sapiens';

// 注意:
// 1.name和age是每个通过Person构造函数创建的对象实例所独有的实例成员。
// 2.species是Person构造函数本身的静态成员,它与任何特定的Person实例无关。

当创建Person的实例时,可以像下面这样访问实例成员:

var alice = new Person('Alice', 30);
console.log(alice.name); // 输出: Alice
console.log(alice.age); // 输出: 30

而静态成员可以通过构造函数本身来访问:

console.log(Person.species); // 输出: Homo sapiens

3. 内置构造函数

JavaScript内置构造函数是语言提供的一组预先定义的函数,用于创建和管理不同类型的对象。这些构造函数不仅提供了创建对象的快捷方式,还定义了对象的默认行为和属性。内置构造函数包括但不限于Object、Array、String、Number、Boolean、Date、RegExp等。

4. 内置构造函数的常用方法

4.1 Object构造函数
  • Object.keys(obj):静态方法获取对象中所有属性。
  • Object.values(obj):静态方法获取对象中所有属性值。
  • Object.assign(target, ...sources): 静态方法创建新的对象。
const obj = { name: 'Alice', age: 30 };
console.log(Object.keys(obj)); // ["name", "age"]
console.log(Object.values(obj)); // ["Alice", 30]
const newObj = Object.assign({}, obj, { city: 'New York' });
console.log(newObj); // { name: 'Alice', age: 30, city: 'New York' }
4.2 Array构造函数
  • forEach(): 迭代数组中的每个元素。
let nums = [1, 2, 3];
nums.forEach(function(item, index, arr) {
    console.log(item * 2); // 分别输出 2, 4, 6
});
  • filter(): 创建过滤后的新数组
let nums = [1, 2, 3, 4, 5];
let evens = nums.filter(num => num % 2 === 0);
console.log(evens); // 输出 [2, 4]
  • map(): 创建映射后的新数组 
let doubles = [1, 2, 3].map(x => x * 2);
console.log(doubles); // 输出 [2, 4, 6]
  • join(): 将数组转换为字符串
let words = ['Hello', 'world'];
let str = words.join(' ');
console.log(str); // 输出 "Hello world"
  • find(): 找到第一个匹配的元素
let array = [1, 2, 3, 4, 5];
let found = array.find(element => element > 3);
console.log(found); // 输出 4
  • every(): 检查所有元素是否符合条件
let bool = [2, 4, 6].every(n => n % 2 === 0);
console.log(bool); // 输出 true
  • some(): 是否存在至少一个元素符合条件
bool = [2, 4, 6, 7].some(n => n % 2 !== 0);
console.log(bool); // 输出 true
  • concat(): 合并多个数组
let array1 = [1, 2];
let array2 = [3, 4];
let combined = array1.concat(array2);
console.log(combined); // 输出 [1, 2, 3, 4]
  • sort(): 对数组排序
let arr = [3, 1, 4, 1, 5, 9];
arr.sort();
console.log(arr); // 输出 [1, 1, 3, 4, 5, 9]
  • splice(): 修改数组
let list = ['a', 'b', 'c', 'd'];
list.splice(1, 2, 'x'); // 删除从第1索引开始的2个元素,插入'x'
console.log(list); // 输出 ['a', 'x', 'd']
  • reverse(): 反转数组顺序
let reversed = ['one', 'two', 'three'].reverse();
console.log(reversed); // 输出 ['three', 'two', 'one']
  • findIndex(): 查找符合条件元素的索引
let index = [1, 2, 3, 4].findIndex(value => value > 2);
console.log(index); // 输出 2
4.3 String构造函数
  • length:用来获取字符串的度长。
  • split:('分隔符') 用来将字符串拆分成数组。
  • substring:(需要截取的第一个字符的索引[,结束的索引号]) 用于字符串截取。
  • startsWith:(检测字符串[, 检测位置索引号]) 检测是否以某字符开头。
  • includes:(搜索的字符串[, 检测位置索引号]) 判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
  • toUpperCase:用于将字母转换成大写。
  • toLowerCase:用于将就转换成小写。
  • indexOf:检测是否包含某字符。
  • endsWith:检测是否以某字符结尾。
  • replace:用于替换字符串,支持正则匹配。
  • match:用于查找字符串,支持正则匹配。
const text = 'Hello, World!';
console.log(text.length); // 13 注意逗号后面有空格
console.log(text.split(' ')); // ["Hello", ",", "World", "!"]
console.log(text.substring(7, 12)); // "World"
console.log(text.startsWith('Hello')); // true
console.log(text.includes('World')); // true
4.4 Number构造函数
  • toFixed:用于设置保留小数位的长度。
const number = 123.456;
console.log(number.toFixed(2)); // "123.46"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值