使用browserify创建小部件

时间:2017-05-01 00:11:06

标签: javascript browserify

我正在从nodeschool做 browserify-adventure 教程。其中一个练习涉及创建一个简单的小部件,它将一个html字符串转换为DOM元素,在其中插入一个给定的名称,然后将其附加到文档中的选定目标。有效的解决方案如下:

var domify = require('domify');
var html = '<div>Hello <span class="name"></span>!</div>';

module.exports = Widget;

function Widget() {
    if (!(this instanceof Widget)) return new Widget;
    this.element = domify(html);

    this.setName = function(str) {
        this.element.querySelector("span.name").textContent=str;
    }

    this.appendTo = function(target) {
        target.appendChild(this.element);
    }
}

我理解这个脚本中的一切是如何工作的,除了一件事 - 有人可以告诉我为什么这个特定的行是小部件工作所必需的吗?

if (!(this instanceof Widget)) return new Widget;

没有它,在浏览器中我得到了

Uncaught TypeError: Cannot read property 'setName' of undefined
    at Object.3.shoe (bundle.js:2397)
    at s (bundle.js:1)
    at e (bundle.js:1)
    at bundle.js:1

0 个答案:

没有答案