return this

来源:3-8 内容组织类-H5(addPage方法)

慕妹6594235

2016-08-28

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


写回答

3回答

Lyn

2016-09-05

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

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


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

0
1
慕妹6594235
非常感谢!
2016-09-07
共1条回复

Lyn

2016-08-29

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
0

慕妹6594235

提问者

2016-08-29

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

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
0

Web App用组件方式开发全站

用HTML5/CSS3/JS流行技术,实现移动端可视化数据报告

3164 学习 · 516 问题

查看课程