1、在JavaScript中,构造函数是一种特殊的函数,主要用于初始化一个新创建的对象。它可以设置实例成员和静态成员。实例成员是构造函数内部通过this添加的成员,它们属于实例对象,只能通过实例化的对象进行访问。例如,当我们创建一个"Person"的构造函数,并且为其添加了"name"和"age"属性时,这些就是实例成员。
另一方面,静态成员是添加到构造函数本身的成员,只能通过构造函数本身来访问,不能通过生成的实例对象来调用。比如,如果我们有一个名为"Star"的构造函数,并给它添加了一个静态属性"color",那么这个"color"就是一个静态成员。
// 构造函数
function Person(name, age) {
this.name = name; // 实例成员
this.age = age; // 实例成员
}
// 添加静态方法
Person.prototype.sayHello = function() {
console.log('Hello');
};
// 创建实例对象
var person1 = new Person('张三', 20);
console.log(person1.name); // 输出: 张三
console.log(person1.age); // 输出: 20
// 调用静态方法
Person.sayHello(); // 输出: Hello
// 访问静态成员
console.log(Person.color); // 输出: undefined
// 修改实例成员
person1.name = '李四';
console.log(person1.name); // 输出: 李四
2、包装类型
在JavaScript中,有三类包装类型:String、Number和Boolean。它们是为了便于基本类型操作而设立的特殊的引用类型,具有基本类型特殊行为。每当读取一个基本类型的值时,后台会自动创建对应的包装对象。这三个包装对象就是把原始类型的值变成(包装成)的对象,也就是原始类型的包装对象。同时,基本包装类型也拥有内置方法可以对基础类型的值进行操作。
const str = 'hello' // const str = new String('hello')