Javascript “var a=b”和“this.a=b”之间的差异
在过去的几天里,我一直在处理和学习JS中的对象和OOP,现在我已经基本了解了它们的工作原理 有一件事困扰着我,我很难理解,那就是这两者之间的区别在哪里:Javascript “var a=b”和“this.a=b”之间的差异,javascript,oop,object,Javascript,Oop,Object,在过去的几天里,我一直在处理和学习JS中的对象和OOP,现在我已经基本了解了它们的工作原理 有一件事困扰着我,我很难理解,那就是这两者之间的区别在哪里: var bird = "Birdy: var bird" 还有这个 this.bird = "Birdy: this.bird" 它们都将向对象添加propertybird。在本例中,这指向对象窗口。区别在哪里?为什么人们使用*this.*bird方法?它的优点是什么?有人能给我举个例子,说明this.bird优于var bird吗 让我们
var bird = "Birdy: var bird"
还有这个
this.bird = "Birdy: this.bird"
它们都将向对象添加propertybird。在本例中,这指向对象窗口。区别在哪里?为什么人们使用*this.*bird方法?它的优点是什么?有人能给我举个例子,说明this.bird优于var bird吗
让我们举个例子:他为什么在那里用这个?这不是多余的吗?这整件事难道不能把它拆下来和/或换掉吗?不,你错了。var将属性添加到当前函数上下文中:
因为这并不总是窗户。它几乎可以是任何对象,具体取决于函数的调用方式。请参考更多说明。@标记为重复的人:重复标记完全错误,请在找到您的答案,因为这个问题标记为重复。@ManvendraSK Yo。感谢这个非常好的示例!因此,使用this关键字允许在函数之外的其他上下文中使用propertybird?@Faizy right!当函数返回时,使用var的所有内容都将被删除。@Faizy可能会用您的首选语言查看一下……还有一个问题:如果我在函数中使用“this”,它将实际指向哪里?表单示例:'函数测试{this.test1=test2}?“this”现在指向/指的是哪个对象?啊,它将指向窗口对象,因为功能测试辅助对象窗口,对吗?还有一个问题:让我们以上面的例子为例。如果我运行它并查看“this”指向的位置,它将只显示“Object…”。有没有办法得到物体的确切名称,在这个cas中,它指向的是obj@乔纳斯w
obj={
add:function(){
var plane="test";
this.bird="test2";
}//plane gets deleted right here as it isnt used anymoreand it was never part of obj
};
obj.add();
obj.plane;//never existed
console.log(obj.bird);