课程
/前端开发
/JavaScript
/JavaScript深入浅出
老师您好!我用Node.js运行了一下您提到的“var yz=obj&&obj.y&&obj.y.z;”代码和运行结果如下 没有起到获取obj.y.z的效果,是不是我哪里弄错了
2016-08-06
源自:JavaScript深入浅出 4-3
正在回答
这样子
var obj={x:1}
obj.y={z:3}
obj.y.z
这个问题的关键点在于若var y=2
y.z=3这个赋值语句过后y.z是否存在。
y.z实际验证之后是不存在的为undefined,可能因为 y的值是基本数据类型 而非对象,
var obj2 = {
x:1,
y:2,
o: {
z:3,
n:4
}
};
这样定义就可以了
我的理解是, 对于obj.y.z,如果y只是一个属性的话,这种写法本身就是错误的,y.z代表的是对象y里面的一个z属性,所以y本身必须也是一个对象,这样才会有意义啊~~
GISGOGOGO 提问者
试了一下 即使一开始将obj实例化为字符串 var obj = new Object("123aaa"); 最终结果依然为undefined
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
4 回答请问 var obj = new Object; 和 var obj = new Object(); 的区别是什么?
2 回答var obj={x:1}之后var obj=new foo(); 那obj之前的x属性不是没有了吗??
2 回答关于那个var obj=Object.create({x:1});
4 回答!function(){'use strict'; var obj={x:1,x:2};console.log(obj.x)}() 没有报错
2 回答为啥new完之后,再去访问obj.y就是undefined呢?