如果以下程序的输出结果是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会被无效化。