1。什么是构造
函数 在面向对象的构造函数,如java
语言,C++,PHP的。在Javascript,构造函数是一常见的
功能,它可以使用new
操作符调用而产生的一种特殊
类型的对象。
复制代码代码如下所示:
是构造函数本杰明
Var Benjamin =新本杰明(zuojj
在上面的例子中,本杰明是一个本杰明对象,那么它是如何实例化的呢
复制代码代码如下所示:
函数本杰明(
用户名,性别){
this.username =
用户名;
this.sex =性;
}
Var Benjamin =新本杰明(zuojj
输出:本杰明{性别:男性
console.log(本杰明);
正如我们所看到的,本杰明构造函数只接收传入的
参数并将其赋值给这个对象,这是因为当构造函数被新操作符调用时,构造函数的这个对象赋值是新操作返回的对象。
这意味着上面的代码相当于:
复制代码代码如下所示:
本杰明= {
用户名:zuojj
性:男性
}
两。为什么使用构造函数
为什么使用构造函数,有以下
原因:
1。使用构造函数意味着可以用相同的基本结构
创建所有这些对象。
2。使用构造函数,意味着本杰明对象被明确标记为本杰明函数的一个实例。
复制代码代码如下所示:
函数本杰明(用户名,性别){
this.username =用户名;
this.sex =性;
}
Var Benjamin =新本杰明(zuojj
Var Ben = {
用户名:zuojj
性:男性
}
输出:真的
console.log(Benjamin instanceof Benjamin);
输出:false
console.log(Ben instanceof Benjamin);
三.使用构造函数意味着我们可以在原型上定义一个共享多个实例的通用
方法。
复制代码代码如下所示:
函数本杰明(用户名,性别){
this.username =用户名;
this.sex =性;
}
benjamin.prototype.getname =函数(){
返回this.username;
}
Var Benjamin =新本杰明(zuojj
Var Ben =新本杰明(柠檬)
/ /输出:zuojj
console.log(benjamin.getname());
输出:柠檬
console.log(ben.getname());
三。注意事项
1.new关键词
当实例化构造函数,别忘了使用新的关键词,是否使用新的关键字,对这个对象的
影响很大。如果没有新关键字,这个对象将指向全局对象(在
浏览器中的窗口和节点中的全局)。因此,当定义构造函数时,建议函数名的首字母大写。
2、如果调用函数没有显式返回表达式,它将隐式地返回该对象,即新创建的对象,否则将影响返回的结果,但它只返回一个对象。
复制代码代码如下所示:
函数条(){
返回2;
}
新栏();
返回新创建的对象
输出:条形{ }
console.log(酒吧);
函数测试(){
this.value = 2;
返回{
食品:1
};
}
var测试=新测试();
返回的对象
输出:对象{ 1 }
console.log(测试);
我们需要知道的是:
a)新的bar()返回一个新创建的对象,而不是一个单词值2。因此,新的bar(构造函数)= bar,但是如果返回是一个数字对象,结果是不同的;
B)这里获得的新测试()是函数返回的对象,而不是由新关键字创建的对象,如下所示:
复制代码代码如下所示:
函数条(){
返回2;
}
新栏();
功能仓(){
返回新号码(2);
}
新谷仓();
输出:真的
console.log(bar.constructor =吧);
输出:数字{ }
console.log(仓);
/ /输出:假
console.log(barn.constructor =仓);
输出:真的
console.log(barn.constructor =号);
-------------------------------------- / * * /
函数测试(){
this.value = 2;
返回{
食品:1
};
}
var测试=新测试();
输出:未定义
console.log(测试值);
/ /输出:1
console.log(测试Foo);
以上是构造函数的总结,希望对初学者有所帮助,错了,希望批评指正。