То, как вы вызываете его, приводит к тому, что значение this
внутри метода createElement
ссылается на глобальный объект.
Я бы порекомендовал вам просто использовать функцию:
var $c = function (tagName) { return document.createElement(tagName); };
var newP = $c('p');
Поведение, о котором я говорю, можно описать на примере:
var foo = 'global foo';
var obj = {
foo: "I'm obj.foo",
method: function () {
return this.foo;
}
};
var fn = obj.method;
obj.method(); // "I'm obj.foo"
fn(); // "global foo"