Javascript 对象和变量

Javascript objects and variables

当谈到 javascript 对象变量时,我真的很困惑。 如果我正在创建一个对象构造函数,那么使用它有什么区别。并使用变种? 例如:

var myObj = function(x){ 
    this.thing = x;
    var otherThing = 20;
    var lastThing = "I wish I knew more about javascript objects";
}

另一件事是设置 this 时。您在对象中使用的变量调用它,在上面的例子中:

   this['thing'];

对吗?

提前致谢。

这是 MDN 上对面向对象 javascript 的引用:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

如果您使用 var 关键字,那么这些变量将对您的对象私有。你将无法做到 myObj.otherThing

如果你使用这个,那么这个变量就是你对象的一个​​属性,所以你可以使用myObj.thing

当您从对象内部调用变量时,您将使用 this.thing,在对象外部您将使用 myObj.thing

希望对您有所帮助。

没错。注意:

var fn = function( x ){
    this[ 'thing' ] = x;
    return this;
}

console.log( fn( 2 ) ); // return window, and function set window[ 'thing' ] = 2
console.log( fn.apply( document, [ 3 ] ) ); // return document, and function set window.document[ 'thing' ] = 3

"this" 引用执行函数的上下文。如果您在 window 中 运行 函数类似于 fn(2),则上下文是 window。使用 apply 更改上下文。那么如果你想让thing在当前函数中,那么在函数上下文中使用var thing

window[ 'thing' ] // is the same as window.thing
window[ '2' ] // is the same as window[ 2 ], but not window.2 (syntax error)