位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 构造函数的返回值

提问人:刘团圆发布时间:2020-11-26

■知识点

    构造函数允许使用return语句。如果返回值为简单值,则将被忽略,直接返回this指代的实例对象;如果返回值为对象,则将覆盖this指代的实例,返回return后面跟随的对象。

    为什么会出现这种情况呢?这与new命令解析过程有关系,使用new命令调用函数的解析过程

如下。

    第1步,当使用new命令调用函数时,先创建一个空对象,作为实例返回。

    第2步,设置实例的原型,指向构造函数的prototype属性。

    第3步,设置构造函数体内的this值,让它指向实例。

    第4步,开始执行构造函数内部的代码。

    第5步,如果构造函数内部有return语句,而且return后面跟着一个对象,会返回return语句指定的对象;否则会忽略return返回值,直接返回this对象。

■实例设计

    下面的示例在构造函数内部定义return返回一个对象直接量,当使用new命令调用构造函数时,返回的不是this指代的实例,而是这个对象直接量,因此当读取x和y属性值时,与预期的结果是不同的。

function Point(x,y)                              //构造函数

    this.x = x;                                        //私有属性

    this.y = y;                                        //私有属性

    return { x : true, y : false }

}

var pi = new Point(100,200);             //实例化对象1

console.log(pi.x);                               //true

console.log(pi.y);                               //false

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部