扫码关注官方订阅号
var obj = { id:'998', name : '我的编号叫:' + this.id, show:function(){ console.log(this.name) } } obj.show();
需要输出
我的编号叫998
难道是代码写错了?
光阴似箭催人老,日月如移越少年。
看了楼上的答案,自己理解了一下,可能是因为javascript的作用域是通过函数隔离的,而不是大括号,所以直接在对象中调用this.id其实是调用的全局变量,即window的属性,因为之前没有定义,所以自然获取不到,你必须通过函数来隔离出一个作用域。
var obj = { id:'998', name : function() { return '我的编号叫:' + this.id; }, show:function(){ console.log(this.name()); } }
改改,再试试看
如果不在全局域修改,根本不可能输出你想要的效果,好么。 因为你在name里面引用了this.id。当js运行到这里的时候,你这个obj都没有实例化完,怎么读取这个obj的id? 只能用构造函数实例化这个obj才能达到你的需求。
name
this.id
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
看了楼上的答案,自己理解了一下,可能是因为javascript的作用域是通过函数隔离的,而不是大括号,所以直接在对象中调用this.id其实是调用的全局变量,即window的属性,因为之前没有定义,所以自然获取不到,你必须通过函数来隔离出一个作用域。
改改,再试试看
如果不在全局域修改,根本不可能输出你想要的效果,好么。 因为你在
name里面引用了this.id。当js运行到这里的时候,你这个obj都没有实例化完,怎么读取这个obj的id? 只能用构造函数实例化这个obj才能达到你的需求。