JS函数调用方式

好久不见. 提交于 2020-04-07 19:28:29
(1)作为函数
在ECMAScript3和ECMAScript5中,调用上下文(this)是全局对象。在严格模式中,调用上下文是undefined
(2)作为方法
此时方法的上下文为该函数对象
(3)作为构造函数
构造函数初始化新创建的对象,并将这个对象作为其调用上下文,并用this引用这个新创建的对象。
new o.m()中的this指向的是新创建的对象,而不是m。
构造函数中的return语句没有返回值或者返回一个原始值,则忽略这个返回值,同时使用新对象作为调用结果
var Create = function(book){
  this.book = book;
  //return ;    还是返回新创建的对象
  //return 1;   还是返回新创建的对象
  //return [1]; 此时返回[1]
}
(4)通过它们的apply(),call()间接调用
注:作为嵌套的函数不会从调用它的函数中继承this。如果嵌套函数作为方法调用,this指向调用它的对象,否则this指向window或undfined。
var o = {
  m: function(){
    var self = this;
    console.log(this === o);    //true
    f();

    function f() {
      console.log(this === o);  //false
      console.log(self === o);  //true
   }
};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!