0

オブジェクトでメソッドを呼び出すことと、オブジェクトを関数の引数として渡すことの違いは何ですか? それに応じて、メソッド呼び出しで引数を渡すにはどうすればよいですか? 単に引数としてプレースホルダーを配置しても、望ましい効果は得られませんでした。すべてのプロパティ名 (値ではない) を反復処理してから、指定された引数 (プロパティ名として) をオブジェクトの実際のプロパティ名と比較する必要がありますか?

正確に何が起こっているのか興味があるので、ここに多くのコメントが付けられたコードがあります。

// create object constructor 
function Foo(prop1, prop2) {
    this.prop1 = prop1;
    this.prop2 = prop2;
    // create object method PrintObjectPropertyM 
    // and retreive property value
    // * there is M at the end of property to distinguish 
    // method/function name

    // how can I add placeholder/argument in method and then
    // call method on object with provided argument (here prop1 or prop2)
    this.printObjectPropertyM = function() {
        console.log(this.prop1);
    };
}

// instantiate new object Bar of Foo type
var Bar = new Foo("prop1val", "prop2val");

// create function which print object property and take object as an argument
var printObjectProperty = function(object) {
    console.log(object.prop1);
};

// call printObjectProperty with Bar object as an argument
printObjectProperty(Bar); // logs prop1var in console

// call Bar method printObjectPropertyM
Bar.printObjectPropertyM(); // logs prop1val in console

私のコメント、コード、または疑似コードに問題がある場合は、親切に修正してください。

4

1 に答える 1

1

解決

[]名前でオブジェクトのプロパティにアクセスするには、表記法を使用する必要があります。

コンストラクター内にメソッドを作成します。

function Foo(prop1val, prop2val) {
   this.prop1 = prop1val;
   this.prop2 = prop2val;
   this.PrintProperty = function (name) {
      if (this.hasOwnProperty(name)) {
         console.log(this[name]);
      }
   }
}

今それを呼び出します:

var bar = new Foo("prop1val", "prop2val");
bar.PrintProperty("prop1");

リンク

  1. プロパティ アクセサー - JavaScript | MDN
  2. hasOwnProperty - JavaScript | MDN
于 2013-10-06T20:29:13.277 に答える