js创建对象

js中声明一个函数如:

function myf(arg){
    //doSomething
    }
    
   var myobj=new myf("some");//1.创建对象
    myobj;
    
   myf("some");//2.执行函数

请问直接调用函数执行和创建对象在执行有什么不同吗?新手不是很理解
阅读 3.4k
5 个回答

这里没啥区别,但是当你需要把一个函数当成变量传去传去的时候,就有用了。这就是所谓的函数是一等公民,意味着一个变量,它即可以指向整数、字符串,也可以指向函数。它即可以作为函数的参数,也可以作为类的成员,用起来非常灵活

function Person(_name,_sex){
    this.name = _name;
}
var person = new Person("test");//this指向的是Person的实例也就是person
Person("test");//this指向的就是window

直接调用的形式好像所有的语言都是一样,传入参数得到返回值。
但是用new就不一样了,你可以参考http://www.cnblogs.com/sitemanager/p/3535959.html

当前函数中正在执行的上下文环境不一样了,也就是说this指向不一样了

this的指向不同,我昨天刚刚看到,new出来的this指向之歌对象的实例,如果是申明的this指向window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题