我可以在js对象中调用函数吗?

时间:2016-09-07 04:53:07

标签: javascript json node.js object handlebars.js

我正在努力创建一个“车库特卖”页面,目前正在学习车把。

我正在尝试从其中一个属性的定义中调用一个函数,并将返回的值作为属性值。

我现在的设置是:

var lawnGarden = [{
    title: "Lawn Mower",
    price: 75.00,
    img: "./img/lawnMower.jpg",
    desc: "Great mower, kept in great condition, runs smooth.",
    link: genLink(this.title);
}, {
    title: "Hedge Clippers",
    price: 25.00
}, {
     title: "Shovel",
    price: 10.00
}, {
    title: "Post Hole Digger",
    price: 20.00
}]

function genLink(title) {
    var baseURL = "https://pensacola.craigslist.org/search/sss?sort=rel&query=";
    return baseURL + title.replace(" ", "%20");
}

我还有这样做吗?或者更好的方式?

我应该提到我在nodeJS工作。

2 个答案:

答案 0 :(得分:0)

您可以为每个条目类型创建一个类。

class LawnGardenEntry {

    constructor(title, price, img, desc) {
        this.title = title;
        this.price = price;
        this.img = img || "stockimg.png";
        this.desc = desc || "default description";
        this.link = this.genLink(title);
    }

    genLink(title) {
        var baseURL = "https://pensacola.craigslist.org/search/sss?sort=rel&query=";
        return baseURL + title.replace(" ", "%20");
    }

}

var lawnGarden = [
    new LawnGardenEntry(
            "Lawn Mower",
            75.00,
            "./img/lawnMower.jpg",
            "Great mower, kept in great condition, runs smooth."
            ),
    new LawnGardenEntry("Hedge Clippers", 25.00),
    new LawnGardenEntry("Shovel", 10.00),
    new LawnGardenEntry("Post Hole Digger", 20.00)
];

您甚至应该为它创建一个工厂方法,并且另一个类可以更好地保存条目。它还取决于这些是如何生成的。

另外,您确实需要更好的genlink功能

答案 1 :(得分:0)

根据@Alexander O'Mara的链接帖子和他在下面的评论的建议,我已经将我的代码修改为:

var lawnGarden = [{
    title: "Lawn Mower",
    price: 75.00,
    img: "./img/lawnMower.jpg",
    desc: "Great mower, kept in great condition, runs smooth.",
}, {
    title: "Hedge Clippers",
    price: 25.00
}, {
    title: "Shovel",
    price: 10.00
}, {
    title: "Post Hole Digger",
    price: 20.00
}]

//Url Generation and Endcoding
for (i = 0; i < lawnGarden.length; i++) {
    lawnGarden[i].link = genLink(lawnGarden[i].title);
}

function genLink(query) {
    var uri = "https://pensacola.craigslist.org/search/sss?sort=rel&query=" + query;
    return encodeURI(uri);
}

感谢您的评论和回答,当我最初发布这篇文章时,我不确定当我阅读错误日志时究竟是什么问题,因为这对于说出我的问题的最佳方式有点无知。

现在看来这是解决问题的最佳方法。