Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 使用';这';在对象中生成值的步骤_Javascript_This - Fatal编程技术网

Javascript 使用';这';在对象中生成值的步骤

Javascript 使用';这';在对象中生成值的步骤,javascript,this,Javascript,This,为什么它没有定义?当我查看对象的值时,它的值为空。谢谢。此由其出现的范围定义。因此,您不能在对象文本中以您想要的方式使用this,因为对象文本没有自己的作用域 此具有当前范围(即全局范围或函数或方法的全局范围)赋予它的含义。您可以这样做: var obj = { name : 'object', itis : this.name, } 或者这个: var obj = { name : 'object', itis : 'object' } 但你所尝试的是行不通的。下面

为什么它没有定义?当我查看对象的值时,它的值为空。谢谢。

由其出现的范围定义。因此,您不能在对象文本中以您想要的方式使用
this
,因为对象文本没有自己的作用域

具有当前范围(即全局范围或函数或方法的全局范围)赋予它的含义。您可以这样做:

var obj = {
   name : 'object',
   itis : this.name,
}
或者这个:

var obj = {
   name : 'object',
   itis : 'object'
}
但你所尝试的是行不通的。下面是一个实际问题的例子:

function Obj() {
    this.name = 'object';
    this.itis = this.name;
}
var obj = new Obj();

此警报显示
My function
,因为
Foo
的范围内定义
obj
没有自己的作用域。

由它出现的作用域定义。因此,您不能在对象文本中以您想要的方式使用
this
,因为对象文本没有自己的作用域

具有当前范围(即全局范围或函数或方法的全局范围)赋予它的含义。您可以这样做:

var obj = {
   name : 'object',
   itis : this.name,
}
或者这个:

var obj = {
   name : 'object',
   itis : 'object'
}
但你所尝试的是行不通的。下面是一个实际问题的例子:

function Obj() {
    this.name = 'object';
    this.itis = this.name;
}
var obj = new Obj();

此警报显示
My function
,因为
Foo
的范围内定义
obj
没有自己的作用域。

关键字不引用对象,即使您在对象内使用该关键字。它只是指启动当前作用域的对象。

关键字并不指对象,即使您在其中使用该对象。它只是指启动当前作用域的对象。

指在函数中传递
时的对象
obj

function Foo() {
    this.name = "My function";

    var obj = {
       name : 'My literal object',
       itis : this.name
    }

    alert(obj.itis); // "My function"
}
Foo();

指在函数中传递
时的对象
obj

function Foo() {
    this.name = "My function";

    var obj = {
       name : 'My literal object',
       itis : this.name
    }

    alert(obj.itis); // "My function"
}
Foo();
代码

var obj = {
   name : 'object',
  itis : function(){
    return this.name;
  }
}
obj.itis();//'object'
完全等同于

var obj = { name: 'object';
            itis: this.name };
换句话说,
this
引用外部作用域的当前
this
,与新创建的对象无关

情况与我们不同

var obj = {};
obj.name = 'object';
obj.itis = this.name;
这是因为执行函数时,这个,将成为对象

一个简单的合理化方法是,当您使用
从对象获取函数后立即调用该函数时,该函数中的
将成为对象。该规则还意味着在Javascript中:

var obj = {};
obj.name = 'object';
obj.itisf = function(){ return this.name; }

console.log(obj.itisf()); // Shows "object"

tonot做同样的事情,因为在第一种情况下,只有在执行
f
中的代码时,
的值才是对象。在第二种情况下,此
将成为全局对象。

代码

var obj = {
   name : 'object',
  itis : function(){
    return this.name;
  }
}
obj.itis();//'object'
完全等同于

var obj = { name: 'object';
            itis: this.name };
换句话说,
this
引用外部作用域的当前
this
,与新创建的对象无关

情况与我们不同

var obj = {};
obj.name = 'object';
obj.itis = this.name;
这是因为执行函数时,这个,将成为对象

一个简单的合理化方法是,当您使用
从对象获取函数后立即调用该函数时,该函数中的
将成为对象。该规则还意味着在Javascript中:

var obj = {};
obj.name = 'object';
obj.itisf = function(){ return this.name; }

console.log(obj.itisf()); // Shows "object"


tonot做同样的事情,因为在第一种情况下,只有在执行
f
中的代码时,
的值才是对象。在第二种情况下,此
将是全局对象。

'this'关键字指当前范围,在您的情况下;您在对象文字声明中使用了“this”,我想,“this”应该是指“Window”对象

如果我们从语法角度来看,就不会有错误。但在运行时,它将是“未定义的”。看看下面的例子

var xyz={
a:10,
b:20,
c:这个
};
书写(xyz.a“和”,xyz.b);
文件写入(xyz.c);
//交叉核对
文件写入(Window.a+Window.b);
//为什么是NaN?

文件写入(未定义+未定义)“this”关键字指的是当前的范围,在您的情况下;您在对象文字声明中使用了“this”,我想,“this”应该是指“Window”对象

如果我们从语法角度来看,就不会有错误。但在运行时,它将是“未定义的”。看看下面的例子

var xyz={
a:10,
b:20,
c:这个
};
书写(xyz.a“和”,xyz.b);
文件写入(xyz.c);
//交叉核对
文件写入(Window.a+Window.b);
//为什么是NaN?

文件写入(未定义+未定义)
指的是什么?
不指的是
obj
,它指的是此
在此范围内所指的任何东西。
指的是什么?
不指的是
obj
,它指的是此在此范围内所指的任何东西。