我正在练习Javascript对象功能。假设我有firstName
和lastName
作为我函数的两个参数。我希望显示如下{"firstName":"tim","lastName":doe}
。这是我的代码,但它打印出undefined。任何的想法?谢谢!
function myFunction(firstName, lastName) {
this.name1 = firstName;
this.name2 = lastName;
}
var obj = new myFunction();
console.log(myFunction('tim', 'doe'));
答案 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