使用new Object()定义为属性的方法未定义

时间:2015-07-07 14:53:16

标签: javascript object

enter image description here我只是尝试了以下为对象分配函数的方法。它适用于chrome(43.0),但不适用于firefox(36.0.4)

代码:

var obj = new Object();

obj.name = "Andrew";
obj.age = 20;

obj.print = function(){
  console.log( this.name );
  console.log( this.age );
}

obj.print(); // printing undefined in Firefox

我知道向Object.getPrototypeOf()Object.defineProperty()等对象添加函数的其他方法,但我认为这些对象是json对象。上面的代码示例使用对象构造函数,我想知道如何将方法添加到使用对象构造函数创建的对象。如果它不可能在使用对象构造函数创建的对象中有方法,那么请告诉我。我知道如何使用JSON并获取其中的方法或使用call和apply,这只是为了找出是否有办法使用new Object()构造函数为对象添加方法。

谢谢。

2 个答案:

答案 0 :(得分:3)

在firefox中,该功能打印出来" Andrew"和" 20"正如你所期望的那样。

它也打印出undefined,但这只是因为你的功能没有返回值。

没什么可担心的,firefox只是让你知道,chrome不是因为它不会引起任何问题。

如果它让您担心,请让函数返回true

obj.print = function(){
  console.log( this.name );
  console.log( this.age );
  return true;
}

现在它将在firefox而不是true

中显示undefined

另外,请确保您在开发工具日志级别中Log已启用,如果Log被关闭,则您只会看到undefined消息。

答案 1 :(得分:0)

您是否尝试过声明这样的对象? :

 var obj = {

      name : "Andrew",

      age  : "20"

    }