javascript构造函数详细解决方案

javascript构造函数详细解决方案
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);
以上是构造函数的总结,希望对初学者有所帮助,错了,希望批评指正。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部