2017-05-12 4 views
0
class Classname { 
    constructor(args) { 
     // code 
    } 

    // this method is added to Classname.prototype 
    function_name(argument) { 
     // body... 
    } 

    //how to add objects similarly to prototype 
} 

Classname.prototypeにオブジェクトを追加する方法はありますか?例えばについてES6でプロトタイプにオブジェクトを追加する方法

+2

。 'Classname.prototype'にオブジェクトを追加すると、クラスのすべてのインスタンスの間でそのオブジェクトが共有されます。これは、通常はあなたが望むものではありません。しかし、あなたがしたいことがあれば、プロトタイプに直接割り当てることができます: 'Classname.prototype.somePropertyName = {greeting:" hello "};' 'Classname'の定義の後。 ES6のプロトタイプは、ES5と同じように動作します。 ES6構文は、より良い構文でプロトタイプを設定するための単なる砂糖です。 – jfriend00

+0

ClassName.prototype.test = {} –

+0

他の方法はありますか? –

答えて

-1
Classname.prototype.myObject = {}; 

または

Classname.prototype.myObject = Object.assign({ foo: 'bar'}, { bar: 'baz' }, anotherObject) 

const User = function() {}; 
User.prototype.info = Object.assign({ foo: 'bar' }, { bar: 'baz' }); 

const bob = new User(); 
bob.info; // => { foo: 'bar', bar: 'baz' } 
+0

あなたの例は奇妙です。次の行の '{foo: 'bar'}'で上書きすると、 'Classname.prototype.myObject = {}'を設定するのはなぜですか?そして、2番目の例の 'Object.assign()'はまったく役に立たない。 'Object.assign({foo: 'bar'})'と '{foo: 'bar'}'は同じです。オブジェクトは 'Object.assign()'に渡されるときとまったく同じように返されます。 – Thomas

+0

あなたはそうです。彼らは変だ。主に私が適切に説明しなかった、または私が持っている必要がある場所を拡大した。 – Nick

0

ゲッターとセッターを使用して、クラス本体内のプロトタイプのプロパティを定義できます。しかし、これはちょっと冗長です。

たとえば、あなたが本当に解決しようとしているどのような問題

const obj = { 
 
    name: 'Shared' 
 
} 
 
class A { 
 
    get a() { 
 
    return obj 
 
    } 
 
} 
 

 
const a1 = new A 
 

 
console.log(A.prototype.hasOwnProperty('a')) 
 
console.log(a1.hasOwnProperty('a')) 
 
console.log(a1.a)

関連する問題