私はJavaスクリプトを初めて使用しますが、この小さなコードが機能しないという小さな問題があります。オブジェクトと関数に関するものです。
var person = {
firstName : "kevin",
lastName : "sandigo"}
function getFullName() {
return this.firstName + " " + this.lastName;
}
alert(person.getFullName());
私はJavaスクリプトを初めて使用しますが、この小さなコードが機能しないという小さな問題があります。オブジェクトと関数に関するものです。
var person = {
firstName : "kevin",
lastName : "sandigo"}
function getFullName() {
return this.firstName + " " + this.lastName;
}
alert(person.getFullName());
関数をその特定のオブジェクトのメソッドにしたい場合:
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())
オブジェクトを関数に渡し、その引数を使用してそのプロパティにアクセスする必要があります。
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() );
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));