在构造函数里面,如果不写return的话默认就是返回创建的实例对象

发布时间 2023-11-11 18:20:57作者: 龙陌

如果以下程序的输出结果是false,则①式可以替换为()

const test = {
  rules: false
};
function Build() {
    this.rules = true;
        ①
}
const build = new Build();
console.log(build.rules);

A
return false;
B
return this.rules;
C
return test;
D
什么都不做

正确答案:C

如果构造函数有返回值且返回值为一个对象,则由构造函数创建的实例对象即为返回的对象;
如果返回的是一个基本数据类型或者返回this,或者没有返回值,则默认返回由该构造函数创建的实例对象。

在本题中,只有C选项会使得构造函数返回的是test对象,其他选项会使得构造函数返回的都是由构造函数创建的实例。
由于test对象的rules属性值为false,而构造函数创建的实例,其rules属性值为true,故只有C选项正确。

1、在构造函数里面,如果不写return的话默认就是返回创建的实例对象。

2、在构造函数里面,如果写了return的话,

       1)如果return的是一个基本数据类型的话比如,boolean,number,undefined等那么仍然返回实例对象;  

       2)如果return的是一个对象的话,则返回该对象。原本的指向实例对象的this会被无效化。  

情况一:return false (return基本数据类型,仍然返回实例化对象)

情况二:return this.rules (return基本数据类型,仍然返回实例化对象)

情况三:return test (return对象test,返回对象test)

情况四:什么都不做 (不写return,默认返回创建的实例对象。)

在构造函数里面,如果不写return的话默认就是返回创建的实例对象,
但是如果加入了return的话,如果return的是一个基本数据类型的话比如,boolean,number,undefined等那么仍然返回实例对象,
如果返回的是一个对象的话,则返回该对象,原本的指向实际对象的this会被无效化。