搜索
写经验 领红包

js构造函数的构造函数是什么(js构造函数的八种方法)

导语:怪异的js:构造函数(1)

我们定义构造函数时,通常是这样的:

function Test(x){

this.a = x;

}

let ob = new Test('a');

我们定义了一个Test构造函数然后通过new操作符执行Test函数。

在这个过程中我们首先创建了一个新的对象,然后将函数的this指向这个新对象,再执行函数,最后将这个新对象返回赋值给ob。

这个是正常的构造函数执行流程。

但是代码时人写的,总会出错。假如,我们在构造函数内使用return返回一个对象会发生什么呢??代码:

function Test(x){ this.a = x; return { b:'b' }}let ob = new Test('a');console.log(ob)console.log(ob instanceof Test);

这时ob对象的引用其实是return后面的对象。ob也不是Test的实例了。

如果我们在return后面返回一个基本类型,就是另外一个情况了。

function Test(x){ let b = 'b'; this.a = x; return b}let ob = new Test('a');console.log(ob)console.log(ob instanceof Test);

这时ob对象的引用其实是this的指向。ob还是Test的实例。

本文内容由快快网络小岑创作整理编辑!