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)
当谈到 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)