【问题标题】:Access object properties after they are assigned by another function在由另一个函数分配对象属性后访问它们
【发布时间】:2013-06-21 14:34:59
【问题描述】:

我是 Javascript 新手,我正在学习如何使用 OOP 原则。我坚持分配对象属性,然后再访问它们。 假设我有一个将属性分配给对象“Car”的函数。

function assignProps()
{
Car.size="small";
Car.cost="expensive";
}

具有空属性的对象 Car,因为它们是从函数分配的。

var Car =
{
size:"",
cost:"",
returnSize: function()
            {
           return this.size;
            },
returnCost: function()
            {
           return this.cost;
            },

}

现在,我想调用分配值的函数,然后访问 Car 的属性。我试过这样做,但显然失败了:

function accessProps()
{

assignProps();
console.log(Car.returnSize());
console.log(Car.returnCost());

}

任何帮助将不胜感激。我有一种感觉,这可能与构造函数或原型有关,但是由于在 Javascript 中创建自定义对象的方法很多,因此文档非常混乱。

编辑:“失败”是指它输出空白而不是新分配的值 编辑:我也尝试过这样做,并且产生了相同的结果。

【问题讨论】:

  • 什么失败了?错误信息是什么?它在哪一行失败,这对应于您的代码中的哪一行?
  • 你忘记调用 accessProps() 了吗?
  • 你能按顺序显示整个代码吗?在哪里创建 Car 以及何时调用 accessProps
  • 它可能失败了,因为您不能/不能在对象文字声明中使用=。你应该使用:。例如:var Car = { size: "", cost: "" };
  • 根据您的浏览器,您应该使用其内置控制台,如开发者工具(或来自扩展程序,如 Firebug),这本可以避免

标签: javascript


【解决方案1】:

您的代码中有一些错误:

var Car = {
   size:"",
   cost:""
}

如果你看看这个小提琴:http://jsfiddle.net/JskBy/ 它按预期工作。

完整代码:

function assignProps() {
    Car.size="small";
    Car.cost="expensive";
}

var Car ={
    size:"",
    cost:""
}
function accessProps(){
  assignProps();
  console.log(Car.size);
}

assignProps();
accessProps();

【讨论】:

    【解决方案2】:

    你的汽车对象初始化有语法错误,应该是

    var Car = { size: "", cost: "" };
    

    【讨论】:

      【解决方案3】:

      第 18 行,第 14 列:额外的逗号。

      第 20 行,第 2 列:缺少分号。

      尝试使用内置 JSLint/JSHint 的开发工具(例如带有附加组件的 Notepad++),它可能会帮助您解决此类问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-18
        • 2023-02-01
        • 2018-12-31
        • 1970-01-01
        • 1970-01-01
        • 2022-11-10
        • 1970-01-01
        • 2013-03-01
        相关资源
        最近更新 更多