返回它在Javascript中构建的新对象

时间:2015-03-20 01:31:44

标签: javascript function object

我正在练习Javascript对象功能。假设我有firstNamelastName作为我函数的两个参数。我希望显示如下{"firstName":"tim","lastName":doe}。这是我的代码,但它打印出undefined。任何的想法?谢谢!

function myFunction(firstName, lastName) {
  this.name1 = firstName;
  this.name2 = lastName;
}
var obj = new myFunction();

console.log(myFunction('tim', 'doe'));

5 个答案:

答案 0 :(得分:2)

试试这个:

console.log(new myFunction('tim', 'doe'));

或者这个:

console.log(obj);

答案 1 :(得分:2)

你可以试试这个

function myFunction(firstName, lastName) {
  this.name1 = firstName;
  this.name2 = lastName;
}
var obj = new myFunction('tim', 'doe');

console.log(obj);

您可以看到此文档JavaScript Constructors

答案 2 :(得分:2)

这种函数叫做构造函数,你不应该直接调用它。您必须将其与new一起使用。

console.log(new myFunction('tim', 'doe'));

这将按预期打印结果。

为了区分构造函数和正常函数,最好用大写字母命名,如下所示:

function MyFunction(...) {...}

答案 3 :(得分:1)

您收到的未定义来自没有返回值的函数,请参阅此帖子:Simple function returning 'undefined' value

获得你想要的结果......

function myFunction(firstName, lastName) {
    this.name1 = firstName;
    this.name2 = lastName;
}
var obj = new myFunction('tim', 'doe');

console.log(obj);

答案 4 :(得分:1)

让我们探索一下这行:console.log(myFunction('tim', 'doe'));

这部分:myFunction('tim', 'doe')将myFunction作为函数执行。由于myFunction没有返回运算符,因此它的返回值是“未定义的”'这是javascript的说法并不存在。因此,单词' undefined'打印在控制台上。

其他提示: 尝试添加以下行:console.log(typeof myFunction);

这应该打印'功能'。 (愿' typeof'运营商成为你最好的朋友)

尝试添加一个返回行作为myFunctions的最后一行,例如:

return 'First name: ' + firstName + " Last name: " + lastName;

但是,此时' var obj = new myFunction();'行未使用。

尝试添加另一行:     console.log(typeof obj);

这应该打印'对象'这意味着' obj'只是 - 一个对象。

以下是您可以使用的完整示例:

function myFunction(firstName, lastName) {
  this.name1 = firstName;
  this.name2 = lastName;
  this.getNames = function() {
      return 'First name: ' + firstName + " Last name: " + lastName;
  }
  console.log("This executes once upon instatiation (the line with var obj = new ...)");
  return "Return value";
}

var obj = new myFunction('tim', 'doe');

console.log(typeof myFunction);
console.log(typeof obj);
console.log(obj.getNames());

如果上述任何一项需要澄清,请告诉我。祝你好运......

BTW,这就是控制台上输出的样子:

This executes once upon instatiation (the line with var obj = new ...)
script.js:14 function
script.js:15 object
script.js:16 First name: tim Last name: doe