这是我的代码:
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()方法?
答案 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] + " ");
}