3

初めての質問ですので、お手柔らかにお願いします。

オブジェクトにデータを取得するメソッド/関数が含まれているオブジェクトの配列を作成しようとしています。

したがって、最終的には使用したくありませんgetFirstName(arrayName, arrayNumber)が、代わりに次のようなものを使用します

aliens[x].getFirstName;

また

persons.first.getFirstName;

Javascript で不可能な場合、またはこの方法で可能である場合は、次善の策を提案してください。

var persons = [

{
    firstname : "John",
    lastname  : "Doe",
    age       : 50,
    eyecolor  : "blue",
},

{
    firstname : "Jane",
    lastname  : "Siyabonga",
    age       : 39,
    eyecolor  : "brown",
},
]

var aliens = [

{
    firstname : "Bob",
    lastname  : "the Alien",
    age       : 350,
    eyecolor  : "yellow",
},

{
    firstname : "xblanque",
    lastname  : "the Predator",
    age       : 19,
    eyecolor  : "red",
},

]

function getFirstName(arrayName, arrayNumber)
{
    var x = arrayName[arrayNumber].firstname;
    return x;
}

Array.prototype.getLastName=function()
{
    var x = this.lastname;
    return x;
}
4

2 に答える 2

5

ECMAscript はgettersetterメソッドをサポートしています。ES5互換の実装では、次のように使用できます

var obj = {
    foo: 42,
    bar: 32,
    get getFoo() {
        return this.foo;
    },
    get sum() {
        return this.foo + this.bar;
    }
};

これで、次のようにアクセスできます

obj.getFoo;  // 42
obj.sum;     // 74

それらを作成する別の方法は、ES5ですObject.defineProperty。例えば:

Object.defineProperty(obj, 'getBar', {
    get: function() {
        return this.bar;
    }
});
于 2013-05-06T13:46:23.447 に答える