当谈到javascript对象变量时,我真的很困惑。 如果我正在创建一个对象构造函数,那么使用它有什么区别。并使用var? EG:
var myObj = function(x){
this.thing = x;
var otherThing = 20;
var lastThing = "I wish I knew more about javascript objects";
}
另一件事是设置这个。在上面的例子中使用变量你在对象中调用它:
this['thing'];
是吗?
提前致谢。
答案 0 :(得分:1)
以下是对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
希望有所帮助。
答案 1 :(得分:0)
没错。小心点:
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”指的是执行函数的上下文。如果在fn(2)
之类的窗口中运行函数,则上下文是窗口。使用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)