您的位置:首页 > Web前端 > JavaScript

js 关于this的一些语法问题

2007-02-07 11:53 876 查看
问题内容: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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: