程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> javascript-Javascript中類的new和類返回this的問題

javascript-Javascript中類的new和類返回this的問題

編輯:編程解疑
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會對內存有分配嗎?

最佳回答:


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;
}
關於JS對象創建,詳細信息,你可以參考http://blog.csdn.net/hsd2012/article/details/50978425這個。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved