js 关于this的一些语法问题

    技术2022-05-11  75

    问题内容:js 关于this的一些语法问题 原讨论链接:http://community.csdn.net/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>

     

    最新回复(0)