请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

return this

如果是通过var h5=new H5();来新建对象的话,那么H5函数中为什么最后要return this?如果要return this,那么应该var h5=H5( )这样使用。对吗?


正在回答

3回答

Lyn 2016-09-05 09:35:13

一、不 return this 也可以认为是构造函数,更深入的说:普通的函数,处理的是参数,重要的是返回值。构造函数,处理的是 this ,比如 this.name 。 即使不返回 this 也是没问题。

之所以返回 this ,是为了可以方便的链式调用。比如,可以直接  (new H5()).name ,如果里面有其他方法的话,还可以 (  new H5()  ).sayHello():


二、可以去掉,有 new 无new 主要看 Object()  这个函数如何处理,因为在本课程中, Object  里面是「创建」了「新」的DOM对象并且返回,所以可以去掉。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕妹6594235 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2016-09-07 13:31:42
Lyn 2016-08-29 10:38:46

H5 是一个构造函数,通过 new 可以,用 H5 定义的构造函数为模板,创建新的对象。所以返回 this

参考以下代码:

function H5( name ) {
    this.name = name;
    return this;
}

// -------
var h5 = H5('h5');  // h5 返回的是 windows
var h6 = H5('h6');
// ------- 所以以上代码和我们预期的非常不一样。。

但是如果我们这要写,基本和预期一致了

var h5 = new H5('h5');  // h5 返回的是 H5 对象
var h6 = new H5('h6');


0 回复 有任何疑惑可以回复我~
提问者 慕妹6594235 2016-08-29 19:03:20

感谢回答。我是小白不太理解哈,还想请教两个问题。

1


function H5(){

this.name="name";

//return this;

}

var h5=new H5();

其中return this有和没有有什么区别?没有return this就是构造函数吧。



2


function H5ComponentBase(){

var component=new Object();

component.name="name";

return component;

}

var h5=new H5ComponentBase();

这个new 是否可以去掉?没有new的是工厂函数模式吧。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号