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
,它指的是此在此范围内所指的任何东西。