我有一个功能完整的代码片段,我在其中创建了一些HTML元素,然后使用“工厂”类型的函数将它们转换为对象:
function Control(HTMLelem) {
this.target = HTMLelem;
this.target.clickPoint = this.target.ownerSVGElement.createSVGPoint();
this.target.lastMove = this.target.ownerSVGElement.createSVGPoint();
this.target.currentMove = this.target.ownerSVGElement.createSVGPoint();
// so no so forth
}
问题是: - 我目前正在将所有新属性(如clickPoint)附加到this.target,基本上是附加到html元素。但我可以猜测也是为了“这个”,所以它就像是:
function Control(HTMLelem) {
this.target = HTMLelem;
this.clickPoint = this.target.ownerSVGElement.createSVGPoint();
this.lastMove = this.target.ownerSVGElement.createSVGPoint();
this.currentMove = this.target.ownerSVGElement.createSVGPoint();
// so no so forth
}
那么有什么不同呢?
答案 0 :(得分:0)
您可以在使用this
工厂时指定Control
绑定:
function Control(){
this.innerHTML = 'foo';
// ...
return this;
}
let e = Control.bind(document.createElement('p'))()
console.log(e.innerHTML); // => 'foo';