- 问题内容: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>
js 关于this的一些语法问题
最新推荐文章于 2025-08-19 08:41:01 发布