js 关于this的一些语法问题

本文探讨了JavaScript中this关键字的行为差异,特别是在不同上下文中调用函数时的变化。通过具体示例展示了this如何随调用方式的不同而变化,并解释了为何在某些情况下this会指向全局对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
  •  问题内容:js 关于this的一些语法问题
  • 原讨论链接:http://community.youkuaiyun.com/expert/topicview1.asp?id=5064915
  • 所属论坛:JavaScript     审核组:WEB开发
  • 提问者:hejunbin     解决者:BlueDestiny
  • 感谢:BlueDestiny
  • 关键字:JavaScript Web 开发 function object bar property return window alert foo foo.bar oself
  • 答案:

    foo = {
        'bar': function () {
            alert(this);
        },
        'toString': function () {
            return 'foo';
        }
    };
    foo.bar();//返回的是"foo"
    (foo.bar)();//返回的是"[object Window]"
    (foo.bar || null)();//返回的是"[object Window]"
    bar = foo.bar; bar();//返回的是"[object Window]"

    这个是为什么啊,还有如果是foo.bar,这个有意义吗,为什么

    Object.prototype.extend = function(object) {
      for (property in object) {
        this[property] = object[property];
      }
      return this;
    }
    可以实现

    function extend(ob1, ob2) {
      for (property in ob2) {
        ob1[property] = ob2[property];
      }
      return ob1;
    }
    不能实现

    这个又是为什么?

    问题多了点,麻烦各位大哥啦:)
    ---------------------------------------------------------------

    刚才写了文章,就顺便把代码一并贴过来吧,改了一下代码执行,这样理解就明白了


    <script>
    foo = {
        'bar': function () {
            var oSelf = this;
            alert(this.toString);
            if (oSelf==window) {
              oSelf = foo;
            }
            alert(oSelf);
        },
        'toString': function () {
            return 'foo';
        }
    };

    window.toString = function () {
      alert("引用全局this --- window");
    }

    foo.bar();
    (foo.bar)();
    (foo.bar || null)();
    bar = foo.bar; bar();
    </script>

  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值