У меня есть следующий код:
var foo = function () {
foo = this;
foo.boo = function () {
console.log("boo");
}
}
var bar = new foo().boo();
var baz = new foo().boo();
Этот код выполняет первое создание экземпляра foo
, но завершается с ошибкой при следующем выводе:
boo
/Users/BaranSkistad/Code/example.js:9
var baz = new foo().boo();
^
TypeError: foo is not a constructor
at Object.<anonymous> (/Users/BaranSkistad/Code/example.js:9:11)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Function.Module.runMain (module.js:609:10)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:578:3
Почему этот скрипт не работает?Я знаю, что это как-то связано с установкой foo в this
в строке 2 вместо простого использования this
, но почему это проблематично?
var foo = function () {
self = this;
self.boo = function () {
console.log("boo");
}
}
var bar = new foo().boo();
var baz = new foo().boo();
Если я установлю self
равным this
проходит, почему это так?