new`運營商創建實例我想有和沒有new
運營商像創建Point
的一個實例:沒有`帶有可變參數列表
Point(5, 10); // returns { x: 5, y: 10 }
// or
new Point(5, 10); // also returns { x: 5, y: 10 }
我得到了它迄今爲止with the help of StackOverflow工作。
function Point() {
if (!(this instanceof Point)) {
var args = Array.prototype.slice.call(arguments);
// bring in the context, needed for apply
args.unshift(null);
return new (Point.bind.apply(Point, args));
}
// determine X and Y values
var pos = XY(Array.prototype.slice.call(arguments));
this.x = pos.x;
this.y = pos.y;
}
但是這看起來太可怕了,我甚至unshifting null
入陣,所以我可以用apply
。那只是感覺不對。
我發現很多解決方案如何用新的構造函數和構造函數包裝來實現它,但我想盡可能簡單地實現它(這只是一個普通的簡單Point)。
有沒有更簡單的方法來實現這種行爲?
這是必須爲所有功能或只是1?如果只有1,坦率地說,重寫該函數會更好。 –
@ Qantas94Heavy這只是我想表現得像這樣的'Point'功能。但當然它被稱爲多次。 –