-1

これはいくつかのコードです

var name = 'ali';

function say() {
  alert(name);
}

名前関数がグローバルオブジェクトによって所有されているため、これは「ali」を警告します。次のコード

var oobj  { 
  var name: 'raziq',
  say:function () {
    alert (name);
  }
}

oobj.say();

そのため、say 関数は oobj オブジェクトによって所有されているため、name プロパティは「ali」ではなく「raziq」をアラートする必要があります。ところで、私はこのキーワードの使い方を知っています

私の質問は、何が警告され、y ですか?

4

3 に答える 3

8

- -アップデート - -

基本的に、1 つは変数で、もう 1 つはプロパティです。あなたはそれらに2つの異なる方法でアクセスします

あなたの質問では、変数nameと関数を宣言します。いつでも、特に再定義しなければ、name常にその値になります。

あなたの場合、そうするnameときに再定義していると思います

var oobj = {
    name: 'raziq'

しかし、あなたはそうではありません。oobj オブジェクトのプロパティを宣言しています。つまり、オブジェクトの外部から名前を警告しようとすると、名前の変数宣言が検索され、「ali」に設定されたグローバル変数が検索されます。名前を取得するにpropertyは、それを見つけるための「パス」を指定する必要があります。パスはoobj.name

あなたはオブジェクトの中にいるので、 and を使用var =しません;。コンマ,を使用するだけですsay: function() {

var oobj = {
    name: 'raziq',
    say: function () {
        alert(this.name);
    }
}
oobj.say();
于 2013-03-06T14:22:28.777 に答える
1

ジェフはすでに正しい答えを投稿しているので、最初の例でさえ意図したとおりに機能していないことを指摘したかっただけです。インナーは機能alertを見せてくれnameます。

したがって、この:

function name() {
  alert(name);
}

name()

メッセージを警告します:

function name() {
  alert(name);
}
于 2013-03-06T14:40:22.713 に答える
0

多分あなたはこれを探しています

var oobj = { 
    name : 'raziq',
    say : function (){
            alert (oobj.name);
        }
}

oobj.say();

更新されたフィドルの例拡張されたフィドルの例を参照してください。

于 2013-03-06T14:24:04.987 に答える