闭包很多基本情况都了解了,以为自己已经把JS的一个难点搞懂了,结果看到网上这个demo又不是很懂了。。
var Demo = {
index: 0,
defaults: { width: "1200px",
height: "500px"},
init: function(){
console.log(this.defaults);
}
}
Demo.init(); //Object {width: "1200px", height: "500px"}
Demo.init();调用init属性的匿名函数,在控制台输出this.defaults,而this指向的就是Demo()不是吗,Demo中的defaults属性的值,为啥不是width: "1200px", height: "500px",那个object{}哪来的。。。
由于好心人提醒。我这问题其实不涉及闭包,把题目更正免得被误解。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
Demo.defaults 是一个对象不是字符串。
题主,你这函数不是会报错么?
分析一下执行流程:
先申明了一个Demo,
然后调用Demo.init方法执行之,此时init的匿名函数中的This指向调用者Demo,
然后里面有一个回调Demo函数,这个时候就应该报错了啊!
我想你的误解的地方可能在于this的指向。
https://developer.mozilla.org...
我刚刚还在疑惑Demo(this.defaults);是个什么-_-||,,,,,defaults是个对象