Javascript 如何为数组/对象创建方法/函数
这是我的第一个问题,所以请温柔一点 我试图创建一个对象数组,其中对象包含一个检索数据的方法/函数 所以最终我不想使用Javascript 如何为数组/对象创建方法/函数,javascript,Javascript,这是我的第一个问题,所以请温柔一点 我试图创建一个对象数组,其中对象包含一个检索数据的方法/函数 所以最终我不想使用getFirstName(arrayName,arrayNumber),而是使用 aliens[x].getFirstName; 或 如果在Javascript中不可能,或者以这种方式不可能,请建议下一个最好的方法 var persons = [ { firstname : "John", lastname : "Doe", age : 5
getFirstName(arrayName,arrayNumber)
,而是使用
aliens[x].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;
}
ECMAscript支持
getter
和setter
方法。在任何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的
对象。defineProperty
。例如:
Object.defineProperty(obj, 'getBar', {
get: function() {
return this.bar;
}
});
外星人[x]。名字代码>工作正常。但是,正如@jAndy所建议的,您可以像任何OOP语言一样使用getter和setter
function Alien( firstname, lastname, age, eyecolor) { // constructor
// ...
this.getFirstName = function() {
return firstname;
};
}
var aliens = [
new Alien("Bob", "the Alien", 350, "yellow"),
new Alien("xblanque", "the Predator", 19, "red")
];
console.log(aliens[0].getFirstName()); // will output "Bob"
另外,还要注意Array.prototype
操作:您正在将getLastName
方法添加到代码中存在的任何数组中。请看这篇文章,它处理的是同一个问题。getter和setter都很棒!我从来没有听说过ECMAscript,因为我是自学成才的程序员。我现在要用谷歌搜索它,但我想知道它是否在所有/大多数浏览器中都是默认的?如果我使用这个,它会工作吗?@MisterBrownZA:ECMAscript和JavaScript是其中之一。为了兼容性,它将100%适用于所有最新的浏览器。它也适用于大多数浏览器的旧版本。只有像IE6-7这样的传统浏览器可能会有这种语法问题。这就是我担心的,我认为这是错误的。只是确认一下,当你说new Alien(“,”,“,”,“,”)时,你是从上面调用函数,还是在创建一个对象?@MisterBrownZA正在创建一个对象,因为我使用Alien
作为构造函数。您必须了解,在Javascript中,一切行为都像一个对象。关于函数,你必须注意“闭包”的概念。当使用操作符new
调用函数时,在函数的闭包中分配一个对象,其引用是this
。另外,new
确保将返回此
。
function Alien( firstname, lastname, age, eyecolor) { // constructor
// ...
this.getFirstName = function() {
return firstname;
};
}
var aliens = [
new Alien("Bob", "the Alien", 350, "yellow"),
new Alien("xblanque", "the Predator", 19, "red")
];
console.log(aliens[0].getFirstName()); // will output "Bob"