Javascript 这条线是什么意思?obj.sayColor=sayColor 窗户。颜色为红色; var obj={color:'blue'} 函数sayColor(){ document.writeln(此颜色); } sayColor(); obj.sayColor=sayColor; obj.sayColor();
这一行是什么意思?是将函数分配给对象吗?当您第一次调用Javascript 这条线是什么意思?obj.sayColor=sayColor 窗户。颜色为红色; var obj={color:'blue'} 函数sayColor(){ document.writeln(此颜色); } sayColor(); obj.sayColor=sayColor; obj.sayColor();,javascript,Javascript,这一行是什么意思?是将函数分配给对象吗?当您第一次调用sayColor时,函数中的此引用了窗口对象,因此它将红色写入文档 通过将其分配给obj功能现在将obj用作this,因此this.color为blue window.color='red'; var obj={ 颜色:“蓝色” } 函数sayColor(){ console.log(this.color); } sayColor();//这个=窗口 obj.sayColor=sayColor; obj.sayColor();//this=
sayColor
时,函数中的此
引用了窗口
对象,因此它将红色
写入文档
通过将其分配给obj
功能现在将obj
用作this
,因此this.color
为blue
window.color='red';
var obj={
颜色:“蓝色”
}
函数sayColor(){
console.log(this.color);
}
sayColor();//这个=窗口
obj.sayColor=sayColor;
obj.sayColor();//this=obj
当您第一次调用sayColor
时,函数中的this
正在引用窗口
对象,因此它将红色
写入文档
通过将其分配给obj
功能现在将obj
用作this
,因此this.color
为blue
window.color='red';
var obj={
颜色:“蓝色”
}
函数sayColor(){
console.log(this.color);
}
sayColor();//这个=窗口
obj.sayColor=sayColor;
obj.sayColor();//这=obj
通常在调用函数sayColor()时
,它将执行代码document.writeln(此.color)的行
将显示分配给窗口的color
属性的颜色值,因为此
在此处指的是窗口
但当你这么做的时候
<script>
window.color='red';
var obj={ color: 'blue'}
function sayColor(){
document.writeln(this.color);
}
sayColor();
obj.sayColor=sayColor;
obj.sayColor();
</script>
它将函数sayColor()
分配给obj
的sayColor
属性。由于sayColor()
是一个函数,对象将其视为一个方法(而不是属性)。现在,当代码obj.sayColor()
在codedocument.writeln(此.color)的行中执行代码>在此
的作用域为obj
时执行。因此,它显示obj
属性的颜色值
window.color='red';
var obj={color:'blue'}
函数sayColor(){
document.writeln(此颜色);
}
//此.color具有窗口范围
sayColor();
obj.sayColor=sayColor;
//此颜色在obj范围内
obj.sayColor()代码>通常,在调用函数sayColor()时
,它将执行代码document.writeln(此.color)的行
将显示分配给窗口的color
属性的颜色值,因为此
在此处指的是窗口
但当你这么做的时候
<script>
window.color='red';
var obj={ color: 'blue'}
function sayColor(){
document.writeln(this.color);
}
sayColor();
obj.sayColor=sayColor;
obj.sayColor();
</script>
它将函数sayColor()
分配给obj
的sayColor
属性。由于sayColor()
是一个函数,对象将其视为一个方法(而不是属性)。现在,当代码obj.sayColor()
在codedocument.writeln(此.color)的行中执行代码>在此
的作用域为obj
时执行。因此,它显示obj
属性的颜色值
window.color='red';
var obj={color:'blue'}
函数sayColor(){
document.writeln(此颜色);
}
//此.color具有窗口范围
sayColor();
obj.sayColor=sayColor;
//此颜色在obj范围内
obj.sayColor()代码>obj.sayColor可以是字符串、数字、函数等任何形式
说,
obj.sayColor=“您的姓名”
现在它是一个普通的字符串,
如果你现在像obj.sayColor那样叫它,它会打印“你的名字”
如果将obj.SetColor设置为函数,则在调用该函数时将调用该函数
因为函数sayColor已经定义
obj.sayColor正在为对象obj创建一个新属性,并将函数sayColor设置为其引用
现在,当您调用obj.sayColor()时,它将调用已经映射到对象obj的函数sayColor
说,
obj.sayColor=“您的姓名”
现在它是一个普通的字符串,
如果你现在像obj.sayColor那样叫它,它会打印“你的名字”
如果将obj.SetColor设置为函数,则在调用该函数时将调用该函数
因为函数sayColor已经定义
obj.sayColor正在为对象obj创建一个新属性,并将函数sayColor设置为其引用
现在,当您调用obj.sayColor()时,它将调用已经映射到对象obj的函数sayColor是的,这正是它的本来面目-我假设它是在您调用sayColor()
(实际上是window.sayColor()
)vsobj.sayColor()时显示此
的范围
因此函数的第一次调用将写入红色,因为本地作用域为window,而window.color
为红色。第二个调用obj.sayColor()
将写入蓝色,因为函数通过引用传递并附加到obj。这是理解独立作用域的一个好方法:染料,这正是它的本来面目-我假设它是在调用sayColor()
(实际上是window.sayColor()
)vsobj.sayColor()时显示This
的作用域
因此函数的第一次调用将写入红色,因为本地作用域为window,而window.color
为红色。第二个调用obj.sayColor()
将写入蓝色,因为函数通过引用传递并附加到obj。这是理解隔离作用域的好方法:D