首页 > 软件操作教程 > 编程开发 > JavaScript
题目内容

JavaScript 构造函数的返回值

题目答案

■知识点

    构造函数允许使用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条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

软件操作 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

相关视频试题

最需教育客户端 软件问题一手掌握

去 App Store 免费下载 iOS 客户端