<script>
function Observer(data) {
this.data = data
this.walk(data)
}
Observer.prototype.walk = function(obj) {
Object.defineProperty(obj, 'name', {
get: function() {
console.log(1111)
return obj['name']
}
})
}
var app1 = new Observer({
name: 'youngwind',
age: 25
})
</script>
为什么会是死循环?想不明白,不就只访问一次吗?
1
zjsxwc 2017-12-17 22:24:12 +08:00 via Android
死递归吧,获取 name 属性不断递归
|
2
dablwow 2017-12-17 22:26:26 +08:00
obj["name"]会访问 get 方法
|
3
gumusu 2017-12-18 10:18:31 +08:00
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
看一下下面的 get get:一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。该方法返回值被用作属性值。默认为 undefined。 你这里,obj['name']被 return 作为 obj['name'] 的值 |