JavaScript对象for..in循环

时间:2018-03-20 03:45:48

标签: javascript

这是我的代码:



function person(name, age) {
	this.name = name;
	this.age = age;
	this.changeName = changeName;

	function changeName(name) {
		this.name = name;
	}
}

my = new person("Ying", 21);
for (i in my) {
	document.write(my[i] + " ");
}




结果:

  

Ying 21 function changeName(name){this.name = name; }

为什么输出changeName()方法?

4 个答案:

答案 0 :(得分:2)

当涉及到changeName属性时,你在函数上使用+运算符,因此它被隐式转换为字符串。你可能想要这样的东西:

if (typeof my[i] !== 'function') document.write(my[i] + " ");

答案 1 :(得分:1)

在javascript方法中并不特别。他们是任何其他对象的成员。如果你想忽略它们,你可以这样做:

my = new person("Ying", 21);
for (i in my) {
    if (typeof my[i] !== 'function') document.write(my[i] + " ");
}

这会跳过其成员是函数的键。

答案 2 :(得分:1)

当你创建一个构造函数时,你在函数中定义的每个东西都会附加到构造对象,因为javascript是函数作用域。因此,您的功能与相关联。因此,你面临的问题。

答案 3 :(得分:0)



function person(name, age) {
	this.name = name;
	this.age = age;
	this.changeName = changeName;

	function changeName(name) {
		this.name = name;
	}
}

my = new person("Ying", 21);
for (i in my) {
    if (typeof my[i] !== 'function') document.write(my[i] + " ");
}