为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS里的对象。创建函数对象和函数对象属性的调用。

老师,各位大虾,我想问个问题 就是 我在使用控制台的时候发现,首先声明一个 function abc(){this.ddd=function{alert("1111")}};然后我前后分别定义var a=abc,a=abc(),a=new abc();都是返回undefined;再输入a的时候 ,分别出现 function abc(){内容省去};undefined;最后一个返回了a{ddd:function}  这三者有什么区别吗?  调用a.ddd的时候只有 a=new abc()这一个有返回一个函数,其他的都是undefined。 求解释。。。这三者分别是什么意思。。

正在回答

3 回答

function abc(){
  this.ddd = function(){
      alert("111");
  };
  return true;
};
console.log(abc());
var a = abc;
console.log(a === abc);
a = abc();
console.log(a);
var a = new abc();
console.log(a);


2 回复 有任何疑惑可以回复我~
#1

ZeroYan 提问者

非常感谢!
2015-12-15 回复 有任何疑惑可以回复我~

首先,function abc(){...} 创建了一个名为abc的函数,此时abc中保存的是函数abc()的地址,所以var a = abc;会将函数abc的地址传给a。这个时候a不应该是undefined,a应该和abc等价,相当于都指向函数abc()。

var a = abc

console.log(a === abc) // true

第二句a = abc(), 相当于将函数abc的执行结果保存到a中,而函数abc是没有返回值的,所以a = undefined。你可以在function abc(){... return true;} 加返回值。这个时候 a = abc(); console.log(a)   // true

第三句就很好理解了,var a = new abc(),将对象abc的引用赋值给a 。所以这时候a有方法ddd。



1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于JS里的对象。创建函数对象和函数对象属性的调用。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信