1

オブジェクト自体の中で関数を実行できますか? 以下のコードを参照してください。

obj = {
     name:function(){alert("maizere");}
};

同様obj.name()に、オブジェクトにアクセスして関数を実行することも意味します。次のように、オブジェクト自体の内部で実行してみませんか。

obj = {
     name:function(){
         alert("maizere");
     },
     name();
};

以来obj = new obj() == { obj() }ですよね?

これを試したところ失敗しました。ここで何か問題がありますか、それとも私が間違っていますか?

4

6 に答える 6

4

以下の表記:

var obj = {};

「オブジェクトリテラル」と呼ばれます。オブジェクトのプロパティであるキーと値のペアのリストが必要です。

そしてそれだけです。

于 2012-12-22T14:45:17.283 に答える
1

オブジェクト リテラルはクラスではないため、オブジェクトと同様に、ルート オブジェクトへのスコープはありませんwindow。さらに、オブジェクト リテラルは、これを行う目的で構文的に構造化されていません。これは異種リストのキーと値のペアです。このような:

var o = { a : b };

JavaScript にはクラスがありません。ただし、withステートメント (めったに使用されません) では、この動作 (オブジェクトのルートを指定せずにオブジェクトのプロパティまたはメソッドにアクセスする) が許可されます。

var obj = { name: function() {} };

with ( obj ) {
    name();
}

ただし、この構造は問題を引き起こすため、コードでは使用しないでください。しかし、あなたの質問への答えとして、それは仕事をします.

于 2012-12-22T14:50:04.483 に答える
1

あなたがしようとしていた構文は意味がありません。

関数をすぐに実行したい場合は、次のようにすることができます。これは、関数を宣言ではなく式として使用するように変換することで機能します。

obj={
  name: (function(){
    alert("maizere");
  })()
};

ただし、これは次と同じではありません。

obj={
  name: function(){
    alert("maizere");
  }
};

obj.name();

this内部では、それぞれの関数呼び出しが異なるためです。前者thisではグローバル オブジェクト (通常Windowはブラウザ内) を指し、後者でthisは を指しobjます。

于 2012-12-22T14:47:15.227 に答える
0

はい、間違いなく何かが間違っています。

JavaScript オブジェクトは名前:値のペアで構成されているため、そのパターンを破って他のことを行うことはできません。詳細をご覧ください

于 2012-12-22T14:53:32.257 に答える
0

JavaScript には、String、Date、Array などの組み込みオブジェクトがいくつかあります。

オブジェクトは、プロパティとメソッドを備えた特別な種類のデータです。

オブジェクトのプロパティにアクセスするための構文は次のとおりです。

objectName.propertyName

例:

var message="Hello World!";
var x=message.length;

上記のコードを実行した後の x の値は次のようになります: 12

message がオブジェクトであることに注意してください。

new を使用してオブジェクトをインスタンス化し、それにプロパティを追加する別の例を次に示します。

person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";

さて、ここにクラスの例があります:

function HelloWorld(hour)
{
  // class "constructor" initializes this.hour field
  if (hour)
  {
    // if the hour parameter has a value, store it as a class field
    this.hour = hour;
  }
  else
  {
    // if the hour parameter doesn't exist, save the current hour
    var date = new Date();
    this.hour = date.getHours();
  }

  // display greeting
  this.DisplayGreeting = function()
  {
    if (this.hour >= 22 || this.hour <= 5) 
      document.write("Goodnight, world!");
    else
      document.write("Hello, world!");
  }  
}

この例では、HelloWorld がクラスです。

于 2012-12-25T14:55:37.847 に答える