return this
来源:3-8 内容组织类-H5(addPage方法)
慕妹6594235
2016-08-28
如果是通过var h5=new H5();来新建对象的话,那么H5函数中为什么最后要return this?如果要return this,那么应该var h5=H5( )这样使用。对吗?
3回答
-
一、不 return this 也可以认为是构造函数,更深入的说:普通的函数,处理的是参数,重要的是返回值。构造函数,处理的是 this ,比如 this.name 。 即使不返回 this 也是没问题。
之所以返回 this ,是为了可以方便的链式调用。比如,可以直接 (new H5()).name ,如果里面有其他方法的话,还可以 ( new H5() ).sayHello():
二、可以去掉,有 new 无new 主要看 Object() 这个函数如何处理,因为在本课程中, Object 里面是「创建」了「新」的DOM对象并且返回,所以可以去掉。
012016-09-07 -
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');
00 -
慕妹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的是工厂函数模式吧。
00
相似问题