试图了解添加到JavaScript系统对象的自定义属性

时间:2018-02-19 12:00:28

标签: javascript

我是网络编程的新手;尝试向Javascript in-build对象添加自定义属性。以下代码按预期工作。

window.myName = "John 1";
alert(window.myName);  // Displays 'John 1'

但是,下面的代码显示“未定义”,想了解它为什么会这样?

window.myName.lastName = "John 2"; 
alert(window.myName.lastName); // Displays 'Undefined', why?

2 个答案:

答案 0 :(得分:2)

这个undefined是因为你在第一步中定义了一个字符串而不是一个对象:

window.myName = "John 1";

myName已定义,但是是一个字符串var,而不是一个对象,因此无法在documentation

中读取属性

了解这一点....您可以将myName定义为对象的预期结果:

window.myName = {}
window.myName.lastName = "John 2"; 

时会得到一个结果
window.myName.lastName

输出:

"John 2"

答案 1 :(得分:1)

您正在对象中添加属性,即未定义对象,因此首先定义对象,然后添加动态属性。检查下面 -

if(typeof window.myName ==="undefined") {
    window.myName = {};  // If object is not defined then define empty object myname
}
window.myName.lastName = "John 2"; 
alert(window.myName.lastName); // Now it will show John2