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()
在code
document.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()
在code
document.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()
)vs
obj.sayColor()时显示
的范围
因此函数的第一次调用将写入红色,因为本地作用域为window,而
window.color
为红色。第二个调用
obj.sayColor()
将写入蓝色,因为函数通过引用传递并附加到obj。这是理解独立作用域的一个好方法:染料,这正是它的本来面目-我假设它是在调用
sayColor()
(实际上是
window.sayColor()
)vs
obj.sayColor()时显示
This
的作用域
因此函数的第一次调用将写入红色,因为本地作用域为window,而
window.color
为红色。第二个调用
obj.sayColor()
将写入蓝色,因为函数通过引用传递并附加到obj。这是理解隔离作用域的好方法:D