此函数是否类似于构造函数
Is this function similar to a constructor?
function catRecord(name, birthdate, mother) {
return {name: name, birth: birthdate, mother: mother};
}
我对构造函数的理解是用于构建对象的函数。
这个 catRecord 函数会算作构造函数吗?
不,您给出的函数返回一个没有类型信息的新关联数组。你所追求的构造函数是这样的:
function fixedCatRecord(name, birthdate, mother) {
this.name = name;
this.birthdate = birthdate;
this.mother = mother;
}
这样,您将拥有一个知道它是固定 CatRecord 的对象,这意味着它可以访问所有适当的元数据(例如知道您可以对其调用哪些方法(。
请注意,它们都可以与"new"一起使用,但它将是 Object 类型的对象(这是关联数组的默认值(,而不是 catRecord 类型的对象。
例如,如果您使用的是控制台.log提供类型信息的内容(例如 Chrome(:
// this is an Object, not what you want!
console.log(new catRecord("Fluffy", "12/12/12", "Melody"));
// this is a fixedCatRecord, good!
console.log(new fixedCatRecord("Fluffy", "12/12/12", "Melody"));
这个 catRecord 函数会算作构造函数吗?
不。
是的,它与构造函数非常相似,但我不会将所有返回对象的函数/方法称为"构造函数"。当不涉及继承时,我使用术语工厂。
EcmaScript 规范将构造函数简单地定义为
创建和初始化对象的函数对象。
尽管在它下面已经有一个关于原型继承的注释。在语言概述中,它说
构造函数是具有名为"
prototype
"的属性的函数,用于实现基于原型的继承和共享属性。
因此,虽然从技术上讲,实现[[construct]]
的每个对象都是构造函数,但在 JavaScript 中,术语"构造函数"仅用于旨在与 new
关键字一起使用并创建共享共同prototype
(形成"类"(的实例的函数。按照惯例,他们的名字是大写的。
构造函数是一个函数,每当我们 创建类 的实例。
返回对创建实例原型的 Object 函数的引用。请注意,此属性的值是对函数本身的引用,而不是包含函数名称的字符串,但它不是只读的(除了原始布尔值、数字或字符串值:1,true,"只读"(。
如果我们要创建一个Date
类的实例,那么:
var e = new Date();
alert(e.constructor); //return Date
然后它的构造函数将返回 Date 类的构造函数名称Date
。
同样,如果我们像var n = new Number(5);
一样创建 Number 的实例,那么它的构造函数将返回 Number,该数字将是构造函数的名称。
参考。
例:
var Vehicle = function Vehicle() {
// ...
}
var vehicle = new Vehicle();
调用构造函数时会发生什么?
当调用new Vehicle()
时,JavaScript 会做四件事:
- 它会创建一个新对象。
- 它将对象的构造函数属性设置为"车辆"。
- 它设置要委托给 Vehicle.prototype 的对象。
- 它在新对象的上下文中调用 Vehicle((。
function Employee() // Class and constructor
{
this.name = "A";
this.age = "23";
}
var a = new Employee(); // Creating instance
alert(a.name); // alerts A
function Employee(a,b) // Class and constructor
{
this.name = a;
this.age = b;
}
var one = new Employee("A",23); // Creating instance
var two = new Employee("B",25); // Creating instance
alert(two.name); // alerts B
希望上面的例子能解释你需要的一切
附加:
如果要将方法添加到类Employee
,则应使用prototype
Employee.prototype.printName = function()
{
document.write(this.name);
};
two.printName(); // Writes B
- 敲除js变量设置类似于调用函数
- 如何在JavaScript中创建类似于something.function()的函数
- 是否有任何类似于Appinventor或Scratch的javascript构造块脚本/库
- 类似于toDataURL()的函数
- 函数在自己的循环中使用 i,以及一个子函数循环 - var 的行为类似于 let
- 正则表达式类似于Javascript中的参数函数
- 是否有类似于“$(window).load();”的东西用于在新插入的 Ajax 内容完成加载后执行函数
- 有没有办法指定我想在 JS anon 函数中使用哪个“这个”,类似于 Java 的方式
- 角度动态内容,类似于jQuery函数中的追加
- 如何在 Javascript 中映射替换字符,类似于 Perl 中的“tr”函数
- JavaScript:构造函数声明相对于其使用的位置,当在函数内时
- 原生 JavaScript 函数是否类似于“超全局”?
- RequireJS-将构造函数应用于模块
- 当使用类似的参数调用日期构造函数时,会提供意外的结果
- 哪个javascript函数类似于parsefloat,它将语言环境作为参数
- 函数(¶m)-类似于PHP
- Javascript,确定在函数中选择了哪个按钮,类似于iOS中的(id)sender
- 此函数是否类似于构造函数
- 私有函数类似于Java使用literal
- 函数类似于map();t创建新数组