LoginSignup
5
5

More than 5 years have passed since last update.

Browserify使ってる時に、newを使用してインスタンスを生成する

Posted at

これが本流?

/path/to/models/user.js
module.exports = (function(){
  function User(){
    this.name = 'youkaiantena';
  }

  User.prototype.myName = function(){
    return this.name;
  };

  return User;
})();
/path/to/app.js
var myClasses  = myClasses || {};
myClasses.User = require('./models/user');

var app  = app || {};
app.user = new myClasses.User('youkaiantena');

console.log(app.user.myName());

やってみたけど色々とダメだと思われるやつら

newしたやつ返せば良いんじゃない??

/path/to/models/user.js
var User = (function(){
  function User(){
    this.name = 'youkaiantena';
  }

  User.prototype.myName = function(){
    return this.name;
  };

  return User;
})();

module.exports = (function(){
  return new User();
})();
/path/to/app.js
var app = app || {};
app.user = require('./models/user')'

console.log(app.user.myName());

出来た!
が、そもそもダメだろこれは。。。

factoryメソッド追加して、それ呼んでみるとか??

/path/to/models/user.js
module.exports = (function(){
  function User(name){
    this.name = name;
  }

  User.prototype.myName = function(){
    return this.name;
  };

  User.prototype.factory = function(name){
    return new User(message);
  }

  return User;
})();
/path/to/app.js
var myClasses  = myClasses || {};
myClasses.User = require('./models/user');

var app   = app || {};

app.user = myClasses.User.factory('youkaiantena');

console.log(app.user.myName());

ダメ。
prototypeに追加したメソッドが存在しない事になってた。
というか、なんでこれ考えたのか謎。。。

factoryクラス作ってそっちでnewしたやつ返すとか?

文字列から動的にオブジェクト作んのどうやるの??、、、evalしかないの??
factoryクラス内でUserをnewしてみたら、そんなやつ知らないって言われた、、、

結論(とりあえず)

本流?と思われる形でやってく事にした。
何か良い方法あったら教えていただけるとありがたいです。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5