2017-12-08 26 views
0

したがって、これがうまくいくいくつかの例を見ました。しかし、明らかに、私は何かを逃している。 :/オブジェクトプロトタイプは `this 'を使ってプロパティにアクセスできません

誰かが私にここで間違っていることを説明してもらえますか? :)

function Code (b) { 
    this.b = b 
    this.arr = [] 
} 

Code.prototype.add = (v) => { 
    console.log(this.b) 
    this.arr.forEach(element => { 
    console.log(element) 
    }); 
    this.arr.push(v) 
} 

var c = new Code('bla') 
console.log(c.add('asdf')) 

だから、これはとエラーがスローされます。明らかに

this.arr.forEach(element => { 
^

TypeError: Cannot read property 'forEach' of undefined 

、私はここで何か間違ったことをやっています。しかし、私は何を知りません。

ありがとうございます! Gergely。

+3

矢印(またはロケット)関数 'this'は、通常の関数' this'と同じではありません - 一般的には、矢印の機能が –

+1

は、私は同意したオブジェクトのプロトタイプの機能のための右のパターンではありません@ JaromandaXと一緒に。コードを以下から変更してください: 'Code.prototype.add =(v)=> {'これを 'code.prototype.add = function(v){'これで 'this'ポインタを修正します。矢印関数を使うと、 'this'ポインタは関数が宣言された時のものに強制されます。 – Intervalia

+0

'' 'function(element)' '' => –

答えて

1
function Code (b) { 
    this.b = b 
    this.arr = [] 
} 
Code.prototype.add =function(v){ 
    console.log(this.b) 
    this.arr.forEach(function(element){ 
    console.log(element) 
    }); 
    this.arr.push(v) 
    console.log(this.arr) 
} 

var c = new Code('bla') 
console.log(c.add('asdf')) 

あなたはfunction()を使用する必要がありますが、異なった矢印機能のthis作品以来、() =>矢印fucntionのinstaed。矢印機能の
thisは、外側スコープ内に存在するthisを指します。

+2

ポインタを使うだけで、重複したものに答えるのは悪い習慣です。問題が分かっている場合は、検索クエリをよりよく作成し、一致するものを見つける可能性が高くなります。あなたはそのような投稿を探し、投稿を重複とマークする必要があります。私も見て、あなたはそれのための十分な担当者を持っていないので、あなたはコメントにリンクを追加し、誰かが投票する必要があります。ポータルをきれいに保つようにしましょう。良い一日を過ごしてください:-) – Rajesh

+0

@Rajeshこのサイトをうまく使用する方法についてのあなたの種類の説明をありがとう! – moon

+0

ダン!私はこれを試しました。それで、私は重複を見ることができなかったのですが、もちろんそれはうまくいきます... Wth man。:(とにかくありがとう!) – Hannibal

-1

function Code (b) { 
 
    this.b = b 
 
    this.arr = [] 
 
} 
 

 
Code.prototype.add = function(v) { 
 
    console.log(this.b) 
 
    this.arr.forEach(element => { 
 
    console.log(element) 
 
    }); 
 
    this.arr.push(v) 
 
} 
 

 
var c = new Code('bla') 
 
console.log(c.add('asdf'))

+2

ポインタだけで、重複したものに答えるのは悪い習慣ですあなたがその問題を知っていれば、より良い検索クエリを作成して一致を見つける可能性が高くなります。そのような投稿を探し、投稿を複写としてマークする必要があります。コメントのリンクと誰かが投票します。ポータルをきれいに保つようにしましょう。良い一日を過ごしてください:-)また、説明のない答えは不完全です。 – Rajesh

+0

わかりました。私は次回にそれに従います。ありがとう、同じことを望みます。 :) –

関連する問題