美文网首页
js-构造函数学习(1)

js-构造函数学习(1)

作者: 若沫成海 | 来源:发表于2019-04-26 15:19 被阅读0次

原文链接:https://www.jianshu.com/p/95a5faee17f1

什么是构造函数

为啥要用构造函数

1.什么是构造函数

在 JavaScript 中,用 new 关键字来调用的函数,称为构造函数。

2.为啥要用构造函数

举个例子,我们要录入一年级一班中每一位同学的个人信息,那么我们可以创建一些对象,比如:

var p1 = { name: 'zs', age: 6, gender: '男', hobby: 'basketball' };
var p2 = { name: 'ls', age: 6, gender: '女', hobby: 'dancing' };
var p3 = { name: 'ww', age: 6, gender: '女', hobby: 'singing' };
var p4 = { name: 'zl', age: 6, gender: '男', hobby: 'football' };
// ...

对象的属性相同,就可以封装一个构造函数

function Person(name, gender, hobby, age) {
    this.name = name;
    this.gender = gender;
    this.hobby = hobby;
    this.age =age;
}

然后就可以通过new关键字调用

var p1 = new Person('zs', '男', 'basketball');
var p2 = new Person('ls', '女', 'dancing');
var p3 = new Person('ww', '女', 'singing');
var p4 = new Person('zl', '男', 'football');
// ...

在使用对象字面量创建一系列同一类型的对象时,这些对象可能具有一些相似的特征(属性)和行为(方法),此时会产生很多重复的代码,而使用构造函数就可以实现代码的复用。
注:对象字面量,就是创建对象的一种简单容易阅读的方法。如下:

var obj = {
a:'aaa',//a是属性,'aaa'是属性值
b:'bbb',
c:'ccc'
}
obj.a//"aaa"

obj['a']//"aaa"

js标准创建对象的方式要用new

var obj=new Object()
obj.a='aaa';
obj.b='bbb'
obj.c='ccc'

obj.c//"ccc"
obj['c']//"ccc"

3.构造函数执行过程
函数在创建的时候还不知道这是不是一个构造函数,在new关键字调用的时候才能确定这是一个构造函数。所以只关注new 关键字来调用的情况,按照上面的例子
(1)每当用new调用的时候会创建一个新的内存空间,标记为Person
(2)函数体内的this就指向该内存,因此给this添加属性就是给实例添加属性
(3)new调用的时候创建的内存被变量p1接受,所以p1也有改内存的属性
(4)返回值默认是this,如果手动添加一个基本数据类型的返回值,最终还是返回 this,手动添加一个复杂数据类型(对象)的返回值,最终返回该对象

function Person2() {
  this.age = 28;
  return 50;
}

var p2 = new Person2();
console.log(p2.age);   // 28
function Person4() {
  this.gender = '男';
  return { gender: '中性' };
}

var p4 = new Person4();
console.log(p4.gender);  // '中性'

相关文章

  • js-构造函数学习(1)

    原文链接:https://www.jianshu.com/p/95a5faee17f1 什么是构造函数 为啥要用构...

  • C# 构造函数总结

    构造函数 构造函数分为:实例构造函数,静态构造函数,私有构造函数。 实例构造函数 1、构造函数的名字与类名相同。 ...

  • Swift基础语法-类的构造函数

    本节知识点 构造函数的介绍 构造函数的基本使用 自定义构造函数 属性与构造函数 1. 构造函数的介绍 构造函数类似...

  • C++面向对象编程 第二周笔记 GeekBand

    本周学习了带指针类的写法 带指针类中的三个特殊函数 1.拷贝构造函数:又称复制构造函数,是一种特殊的构造函数,它由...

  • 构造函数

    构造函数分为: 1.实例构造函数 2.私有构造函数 3.静态构造函数 私有构造函数 私有构造函数是一种特殊的实例构...

  • Java基础-3 构造函数

    构造函数: 构造函数的作用: 给对应的对象进行初始化。 构造函数的格式: 构造函数要注意的细节:1. 构造函数是...

  • [前端]JS-构造函数的继承

    1、apply(); 示例 缺点:1、拿不到父类中prototype中的对方和方法,无论是在调用apply()之前...

  • JS-面向对象(构造函数、原型)

    什么是面向对象?对象的本质:属性和方法的集合学过的对象Array、String、Math、Date ..........

  • C++语言基础(02)

    1.可变参数 2.构造函数、析构函数、拷贝构造函数 构造函数 拷贝构造函数 //浅拷贝(值拷贝)问题 //深拷贝

  • 构造函数 Kotlin的类包括1个主构造函数和多个次构造函数。 主构造函数 其中主构造函数会紧跟类名进行声明。 声...

网友评论

      本文标题:js-构造函数学习(1)

      本文链接:https://www.haomeiwen.com/subject/qexqnqtx.html