以下是http://jsfiddle.net/QWXf4/1/
的JavaScript代码段var x = 5;
function PartyWithoutX(person) {
// This property will go to window and pollute the global object
dance = function (person) {
document.write("Hello " + person.getFullName() + ", Welcome to the Party.");
};
this.showX = function () {
// This will change the global x variable
x = 25;
document.write("Value of x is " + x);
};
}
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
Person.prototype.getFullName = function () {
return this.firstName + " " + this.lastName;
};
var dinesh = new Person("Dinesh", "Singh");
var p1 = new PartyWithoutX(dinesh);
document.write(window.dance(dinesh) + "; Enjoy!!");
document.write("<br/>");
document.write(p1.showX());
document.write("<br/>");
document.write(window.x);
document.write("<br/>");
您可以检查的输出是
Hello Dinesh Singh, Welcome to the Party.undefined; Enjoy!!
Value of x is 25undefined
undefined
我在期待
Hello Dinesh Singh, Welcome to the Party; Enjoy!!
Value of x is 25
undefined
为什么我在输出中得到“Party.undefined”和“25undefined”。
这是怎么回事?
答案 0 :(得分:2)
当你这样做时
document.write(p1.showX());
你正在做什么
document.write("Value of x is " + x);
之后
document.write(undefined);
因为p1.showX()
返回undefined
。
但正如Pointy指出的那样,you should not use document.write
at all, especially after the document was loaded。
答案 1 :(得分:1)
您将这些函数调用的结果传递给document.write()
。他们没有返回任何东西,所以你得到那些“未定义”的结果。
答案 2 :(得分:1)
替换
document.write(p1.showX());
带
p1.showX();
因为第一个打印出未定义的pi1.showX()的结果。