4 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果在對(duì)象創(chuàng)建期間想要一個(gè)完全可用的對(duì)象,請(qǐng)使用 Function 對(duì)象。
let arrayObj = [new function(){
this.number1 = 1;
this.number2 = 2;
this.sum = sum(this.number1 , this.number2)
}]
// minor edit to return the sum instead of returning the result of the console log
function sum(n1, n2) {
console.log(n1 + n2);
return n1 + n2;
}
for (let i in arrayObj){
console.log(arrayObj[i])
}
但是,如果您以后需要此功能,并希望所有這些對(duì)象都可以訪問(wèn)它,那么請(qǐng)停止使用匿名對(duì)象并創(chuàng)建一個(gè)實(shí)際的類或原型。
原型:
function Point(number1, number2){
this.number1 = number1;
this.number2 = number2;
}
Point.prototype.sum = function(){
return this.number1 + this.number2;
}
let arrayObj = [
new Point(1,2),
new Point(3,4),
new Point(15,30)
];
for (let i in arrayObj){
console.log(arrayObj[i].sum())
}
班級(jí):
class Point {
constructor(number1, number2){
this.number1 = number1;
this.number2 = number2;
}
get sum(){
return this.number1 + this.number2;
}
}
let arrayObj = [
new Point(1,2),
new Point(3,4),
new Point(15,30)
];
for (let i in arrayObj){
console.log(arrayObj[i].sum)
}

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以在遍歷對(duì)象時(shí)將該屬性添加到對(duì)象。
const arrayObj = [{
number1: 1,
number2: 2,
}];
function sum(n1, n2) {
return n1 + n2;
}
for (let i in arrayObj){
arrayObj[i].sum = sum(arrayObj[i].number1, arrayObj[i].number2)
console.log(arrayObj[i])
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
有一個(gè)簡(jiǎn)單的解決方案。您可以在 sum 屬性中放置一個(gè)即時(shí)函數(shù),并在該函數(shù)下,通過(guò)將對(duì)象的其他所需值轉(zhuǎn)換為變量來(lái)發(fā)送它們。見下文:
function sum(n1, n2) {
return n1 + n2;
}
const arrayObj = [{
'number1': 1,
'number2': 2,
'sum': function () {
let num1 = this.number1, num2 = this.number2;
return sum(num1, num2);
}
}];
console.log(arrayObj.sum())

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
對(duì)于這個(gè)問(wèn)題,我找到了另一個(gè)有趣的解決方案(我不記得是在哪里找到的。)。使用javascript 的getter 函數(shù)可以輕松解決問(wèn)題。您可以直接在對(duì)象中使用它來(lái)使用外部函數(shù)。如果對(duì)象的屬性(鍵)使用外部函數(shù)來(lái)獲取值,并且它的行為必須像普通的“鍵:值”對(duì)(不是方法/函數(shù)),那么 getter 函數(shù)是最好的使用方法得到價(jià)值。
function sum(n1, n2) {
? ? return n1 + n2;
}
const arrayObj =?
? ? ? {
? ? ? ? get sum() {return sum(this.number1, this.number2)},
? ? ? ? number1: 1,
? ? ? ? number2: 2,
? ? ? ? number3: 4,
? ? ? ? get totalsum() {return sum(this.sum, this.number3)} //using the sum property (that used external function) in another property.
? ? ? };
console.log(arrayObj);
console.log('the sum of '+arrayObj.number1+' & '+arrayObj.number2+' is: '+arrayObj.sum);?
console.log('the sum of '+arrayObj.sum+' & '+arrayObj.number3+' is: '+arrayObj.totalsum);
添加回答
舉報(bào)