本文通过三个具体代码示例,深入分析 JavaScript 构造函数中不同返回值对实例对象的影响。当构造函数无返回值或返回原始类型(如字符串)时,实例仍为构造函数创建的对象;若返回对象类型(如 String 对象),则实例变为该返回对象。理解这一机制有助于避免原型链断裂及属性丢失问题。
JavaScript 构造函数返回值行为分析
参考《JavaScript 核心》第 151 页内容。
发布时间:2008-11-25
*/
具体代码实现如下:
// 情况一:构造函数没有显式返回值
function Test0(){
this.name='test0';
}
var test0=new Test0;
//debugger;
alert(test0);// 输出 [Object]
alert(test0.name);// 输出 test0
// 情况二:构造函数返回一个字符串对象
function Test(){
this.name='test';
return new String('123');// 返回字符串对象
}
var test=new Test();
alert(test);// 输出 123
alert(test.name);// 输出 undefined,说明有构造函数创建的对象是字符串对象
// 情况三:构造函数返回一个原始类型字符串
function Test2(){
this.name='test2';
return '123';// 返回字符串对象
}
var test2=new Test2();
alert(test2);// 输出 [Object]
alert(test2.name);// 输出 test0