個人的には、クラスのすべてのコンテンツをエンクロージャに格納することをお勧めします。
that
あなたの例ではMyClass
インスタンスが設定されていません。
var MyClass = (function() {
var MyClass = function (config) {
// Optional check whether the class was accessed using new
if (!(this instanceof MyClass))
throw new Error('You must create the instance using the keyword new');
// Don't add it to the prototype as it is unique to the instance
this.config = config;
this.blah();
};
MyClass.prototype = {
blah: function() {
if (this.config.blah)
console.log(this.config.blah);
}
};
return MyClass;
})();
// That has the instance now
var that = new MyClass ({
blah: 'helloWorld'
});
あなたが試みることができるよりも、あなたがES6を使用することができる場合:
class MyClass {
constructor (config) {
// Don't add it to the prototype as it is unique to the instance
this.config = config;
this.blah();
}
get config() {
return this._config;
}
set config (value) {
this._config = value;
}
blah() {
if (this.config.blah)
console.log(this.config.blah);
}
}
let that = new MyClass({
blah: 'helloWorld'
});
"ベター" は常に議論の余地があります。私は、あなたが 'that'と' config'をインスタンスそのものではなくプロトタイプの上に直接置くという作業だと思います。それをサポートするブラウザで['class'構文](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes)を使用することができます。本当に、それはちょうどあなたにとって最善のものです。 –