📅  最后修改于: 2023-12-03 15:24:51.378000             🧑  作者: Mango
在 JavaScript 中,我们可以使用 new
关键字来创建一个新的对象。在创建对象时,我们可以使用构造函数或工厂函数。
构造函数是一个特殊的函数,它具有以下特征:
new
关键字调用该函数。示例代码:
function Person(name, age) {
this.name = name;
this.age = age;
}
var person1 = new Person("Tom", 20);
var person2 = new Person("Jerry", 25);
在这个例子中,Person
函数就是一个构造函数,它用于创建 Person
对象。
如何检测函数是否为构造函数呢?以下是几种常见的方法:
instanceof
运算符用于检测一个对象是否是另一个对象的实例。
function Person(name, age) {
this.name = name;
this.age = age;
}
var person = new Person("Tom", 20);
console.log(person instanceof Person); // 输出 true
上面的代码中,person
是 Person
的实例,因此返回 true
。
每个 JavaScript 函数都有一个 prototype
属性,它是一个对象,包含了由该函数创建的所有对象的共享属性和方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
console.log(Person.prototype.constructor === Person); // 输出 true
上面的代码中,Person.prototype.constructor
指向 Person
函数本身,因此返回 true
。
Object.getPrototypeOf()
方法返回指定对象的原型。如果指定对象没有原型,则返回 null
。
function Person(name, age) {
this.name = name;
this.age = age;
}
var person = new Person("Tom", 20);
console.log(Object.getPrototypeOf(person) === Person.prototype); // 输出 true
上面的代码中,Object.getPrototypeOf(person)
返回 Person.prototype
,因此返回 true
。
综上所述,我们可以使用 instanceof
运算符、构造函数的 prototype
属性或者 Object.getPrototypeOf()
方法来检测一个函数是否为构造函数。