JavaScript 中的对象变量访问:this.var 还是 Not?
在 JavaScript 的面向对象编程模型中,人们常常想知道是否每个对象内的变量需要 this 关键字。
this.var 与 Local变量
与 C 的基于类的模型不同,JavaScript 使用原型继承。在原型继承中,一切都是对象,对象可以从其他对象继承。
在 JavaScript 中,使用 new 关键字调用的构造函数会创建新对象并为其分配属性。构造函数中的 this 关键字引用新创建的对象。
可通过 this 关键字访问的方法是在对象上调用的函数。但是,在方法作用域内声明的局部变量不能通过 this 直接访问。
示例:
function Foo() { this.bar = 0; this.getBar = function() { return this.bar; }; }
在此示例中,this.bar 指的是 bar Foo 实例的属性。但是,getBar 方法中的 bar 引用的是默认情况下未定义的局部变量。要访问属性,需要使用 this.bar。
通过闭包创建私有属性
为了创建私有属性,JavaScript 依赖于闭包。在构造函数作用域内定义的函数可以访问该构造函数的局部变量。因此,通过在构造函数中创建函数并将它们公开为特权方法,您可以维护私有属性。
示例:
function Foo() { var bar = "foo"; this.getBar = function() { return bar; }; }
在此示例中, bar 是Foo 构造函数的局部变量。 getBar 方法是有权访问 bar 的特权方法。
原型方法和特权方法
原型对象上定义的方法由所有实例继承。但是,除非子原型继承自父原型,否则它们无权访问特权方法。
总之,虽然从方法内访问对象属性需要 this.var,但对于局部变量来说并不是必需的。特权方法,定义为构造函数中的闭包,提供了一种在 JavaScript 的面向对象编程模型中创建私有属性的机制。
以上是我什么时候应该使用 `this.var` 来访问 JavaScript 对象中的变量?的详细内容。更多信息请关注PHP中文网其他相关文章!