Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:Function-返回一个对象将使this.variable无效_Javascript_Function_This_Instance Variables - Fatal编程技术网

Javascript:Function-返回一个对象将使this.variable无效

Javascript:Function-返回一个对象将使this.variable无效,javascript,function,this,instance-variables,Javascript,Function,This,Instance Variables,我正在使用javascript。声明实例变量“this.variable”将一直有效,直到我的函数返回一个对象为止。返回字符串,数字不影响它。在返回一个对象的情况下,实例变量不再工作,变成“未定义”。请你能帮帮我吗!(在firefox和chrome最新版本下测试的网站上查找示例) 此在函数范围内为DOMWindow 对象范围内的此是对象。新建操作符将创建一个新对象并对其应用函数-此在函数范围内指的是该对象 但是当函数在没有new的情况下被调用,或者包含return语句时,它将不会作为“构造函数”

我正在使用javascript。声明实例变量“this.variable”将一直有效,直到我的函数返回一个对象为止。返回字符串,数字不影响它。在返回一个对象的情况下,实例变量不再工作,变成“未定义”。请你能帮帮我吗!(在firefox和chrome最新版本下测试的网站上查找示例)


在函数范围内为
DOMWindow


对象范围内的此
是对象。

新建操作符将创建一个新对象并对其应用函数-
在函数范围内指的是该对象


但是当函数在没有new的情况下被调用,或者包含return语句时,它将不会作为“构造函数”执行
将指向执行上下文,通常是
窗口
对象。

您以错误的方式使用构造函数。构造函数本身不应该返回任何内容。您可以使用
prototype
属性来声明“class”/object方法,也可以像以前一样在构造函数中设置它们:

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;
};

当然,这是一个通用且有点糟糕的示例,但您可能明白了这一点:)

非常感谢,这是我的解决方案!!使用return语句调用函数不会作为“构造函数”执行。谢谢您的时间和示例!
function Constructor(value) {
  this.variable = value;
}

Constructor.prototype.say = function(something) {
  return "I say: " + something;
};