开发者社区> 问答> 正文

Javascript中类的new和类返回this的问题

使用Javascript创建两个类

function RectF(x, y, w, h) {
this.X = x;
this.Y = y;
this.Width = w;
this.Height = h;
...
}
function PointF(x, y) {
this.X = x;
this.Y =y;
}

使用时我想像C语言那样传参数进去:`
`int ret = isin(RectF(10,10,10,10), PointF(2,19));
结果不敢想像!为什么?因为上面使用的只是多重函数嵌套调用,根本没有类!然而这两个function没有返回值,
传给isin的两个参数都是undefined!
应该这样调用int ret = isin(new RectF(10,10,10,10), new PointF(2,19));
不过我试着在两个类的最后添加上reurn this;结果就正确了!
所以问题来了:使用return this返回的究竟是什么?难道返回this和加new是一样的效果吗?那么返回this会对内存有分配吗?

展开
收起
云栖技术 2016-06-02 11:03:55 1975 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!
    function PointF(x, y) {
    this.X = x; 
    this.Y =y;
    }
    如果直接调用即var p= PointF(x, y) ;此时函数中this,代表全局变量对象,也就是window,其中,x、y为全局变量,你可以通过window.x访问x。也可以直接输出x、y。
    如果通过var p=new PointF(x, y) ;此时函数中this,代表的是构造函数PointF创建的对象,其中x,y为局部变量。
    如果你想通过var p= PointF(x, y) ;调用,并且创建一个新的对象。你可以改写PointF函数如下
    function PointF(x,y){
    var o=new Object();
    o.x=x;
    o.y=y;
    return o;
    2019-07-17 19:24:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载