1

私はJavaスクリプトを初めて使用しますが、この小さなコードが機能しないという小さな問題があります。オブジェクトと関数に関するものです。

var person = {
firstName : "kevin",
lastName : "sandigo"}

function getFullName() {
return this.firstName + " " + this.lastName;
}


alert(person.getFullName());
4

3 に答える 3

3

関数をその特定のオブジェクトのメソッドにしたい場合:

var kevin = {firstName: "kevin", lastName: "sandigo"}

person.getfullName = function() {
  return this.firstName + " " + person.lastName
}

alert(kevin.getFullName())

または、よりクラスのようなアプローチが必要な場合

function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName  = lastName
}

Person.prototype.getFullName = function() {
  return this.firstName + " " + person.lastName
}

var kevin = new Person("kevin", "sandigo")

alert(kevin.getFullName())
于 2013-01-29T04:51:53.317 に答える
2

オブジェクトを関数に渡し、その引数を使用してそのプロパティにアクセスする必要があります。

var person = {
    firstName: "kevin",
    lastName: "sandigo"
};

function getFullName (obj) {
    return obj.firstName + " " + obj.lastName;
}

alert( getFullName(person) );

再利用できるクラスを作成する場合は、prototype:で関数を宣言する必要があります。

function Person (firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.getFullName = function () {
    return this.firstName + " " + this.lastName;
};

var kevin = new Person("kevin", "sandigo");

alert( kevin.getFullName() );
于 2013-01-29T04:50:12.540 に答える
0

this関数で使用していますがthis、関数を呼び出すオブジェクトを参照しています...この場合はウィンドウオブジェクトです。

関数の値にアクセスするには、2つのオプションがあります。あるメソッドが別のコメントで言及されました...オブジェクトを関数に渡します:

var person = {
  "firstName" : "Kevin",
  "lastName"  : "Sandigo"
};

function getFullName(obj){
  return obj.firstName + " " + obj.lastName;
}

alert(getFullName(person));

もう1つのオプションは、オブジェクトをコンテキストとして関数に渡すことです。これは、callメソッドを使用して行われます。例:

var person = {
  "firstName" : "Kevin",
  "lastName"  : "Sandigo"
};

function getFullName(){
  return this.firstName + " " + this.lastName;
}

alert(getFullName.call(person));
于 2013-01-29T04:59:49.097 に答える