我正在使用javascript。声明一个实例变量“this.variable”将一直有效,直到我的函数返回一个对象。返回一个字符串,数字不会影响它。在返回对象的情况下,实例变量不再起作用并变为“未定义”。请你能帮帮我! (在最新版本的firefox& chrome下测试的http://jsfiddle.net/woko/vE4rq/2/处查找示例)
function Funct() {
this.varfunc = "this ist a instance";
return false;
}
var f = new Funct();
console.log(f.varfunc);
function FunctReturnobj() {
this.varfunc = "this ist a instance + return an object";
return {};
}
var fr = new FunctReturnobj();
console.log(fr.varfunc)
答案 0 :(得分:0)
this
为DOMWindow
。
this
是对象。
答案 1 :(得分:0)
new
运算符将创建一个新对象并对其应用函数 - 函数作用域中的this
引用该对象。
但是当没有new调用函数或包含return语句时,它不会被作为“构造函数”执行。 this
将指向执行上下文,通常是window
对象。
答案 2 :(得分:0)
您正在以错误的方式使用构造函数。构造者不应该自己返回任何东西。您可以使用prototype
属性声明“类”/对象方法,或者您可以在构造函数中设置它们,就像您已经这样做:
function Constructor(value) {
this.variable = value;
}
var obj = new Constructor('test');
obj.variable; // -> Returns 'test';
您可以声明对象的方法:
function Constructor(value) {
this.variable = value;
this.say = function(something) {
return "I say: " + something;
};
}
或原型方式:
function Constructor(value) {
this.variable = value;
}
Constructor.prototype.say = function(something) {
return "I say: " + something;
};
当然这是一个通用且有点不好的例子,但你可能会明白这一点:)