创建对象的方法

  • 对象字面量
  • new Object()
  • 自定义构造函数

构造函数

构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

在 JS 中,使用构造函数时要注意以下两点:
构造函数用于创建某一类对象,其首字母要大写
构造函数要和 new 一起使用才有意义

new的执行

new 在执行时会做四件事情:

  • 在内存中创建一个新的空对象。
  • 让 this 指向这个新的对象。
  • 执行构造函数里面的代码,给这个新对象添加属性和方法。
  • 返回这个新对象(所以构造函数里面不需要 return )

例子:

function Start(){
            this.name="123"
            this.age=18
        }
let st=new Start()
console.log(st.age);

静态成员和实例成员

JavaScript 的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的 this 上添加。通过这两种方式添加的成员,就分别称为静态成员和实例成员。

  • 静态成员:在构造函数本上添加的成员称为静态成员,只能由构造函数本身来访问
  • 实例成员:在构造函数内部创建的对象成员称为实例成员,只能由实例化的对象来访问

例子:

function Start(){
            this.name="123"
            this.age=18
        }
        let st=new Start()
        Start.hobby="run"
        console.log(Start.hobby);
        console.log(st.hobby);

javascript 构造函数方法 js构造函数怎么写_js


包括添加在原型链上的属性也需要由实例去访问

Start.prototype={
	 hobby:"run"
    }
console.log(st.hobby);

ES6的构造函数

类constructor构造函数
constructor() 方法是类的构造函数(默认方法),用于传递参数,返回实例对象,通过 new 命令生成对象实例时,自动调用该方法。如果没有显示定义, 类内部会自动给我们创建一个constructor()

示例代码

class Person {
            constructor(name, age, sex) {
                this.name = name
                this.age = age
                this.sex = sex
            }
            say() {
                console.log(this.name + "==" + this.age + "==" + this.sex);
            }
        }

        let p = new Person("ZYY", 18, "BOY")
        p.say()

ES6类的继承

class Student extends Person {
            constructor(name, age, sex, id) {
                super(name, age, sex);//继承父类的构造函数,记得传入对应的参数
                this.id = id
            }
            sayFather() {
                super.say();//super可以调用父类的方法
            }
            say() {
                console.log(this.name + "==" + this.age + "==" + this.sex + "==" + this.id);
            }
        }
        let s = new Student("XDX", 20, "GIRL", 12)
        s.say()
        s.sayFather()

javascript 构造函数方法 js构造函数怎么写_构造函数_02