function myFunc(){
this.taste = 'yummi';
console.log(this.taste);
console.log(typeof this);//logs object
}
var noNewObj = myFunc();
console.log(typeof noNewObj);//logs undefined
在myFunc中,this
关键字引用noNewObj的新对象,但在函数外部,变量noNewObj被声明为没有new关键字的函数,不是对象,为什么?
答案 0 :(得分:3)
noNewObj
被分配了调用myFunc()
的返回值,其为undefined
,因为没有给出明确的返回值。
如果您尝试使用myFunc()
作为构造函数,则需要使用new
关键字,如下所示:
var noNewObj = new myFunc();
另外,如果你的意思是使用myFunc()
作为构造函数,你应该用大写字母开头,因为这是一个常见的Javascript约定,表明函数是用{{{ 1}}。
答案 1 :(得分:0)
不,它错了:在myFunc中,this关键字引用了noNewObj的新对象
如果未使用新关键字,那么' this'函数内部的变量将引用全局对象。
并且没有分配返回值,因此它记录未定义。
答案 2 :(得分:0)
myFunc
不会在noNewObj
中放置/返回anthing,
所以它是未定义的
function myFunc(){
this.taste = 'yummi';
console.log(this.taste);
console.log(typeof this);//logs object
//return something here
}