JavaScript对象的“属性附件级别”

时间:2017-07-18 17:02:42

标签: javascript html object

我有一个功能完整的代码片段,我在其中创建了一些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
}

那么有什么不同呢?

1 个答案:

答案 0 :(得分:0)

您可以在使用this工厂时指定Control绑定:

function Control(){
    this.innerHTML = 'foo';
    // ...
    return this;
}

let e = Control.bind(document.createElement('p'))()
console.log(e.innerHTML); // => 'foo';

jsfiddle