Javascript 理解定义为函数的JS对象与未定义为函数的JS对象
这里的相对JS新手试图理解定义JS对象的两种方法之间的区别 在某些情况下,我看到了一些我称之为“名称空间”对象或“处理程序”的示例,它们可能看起来像这样:Javascript 理解定义为函数的JS对象与未定义为函数的JS对象,javascript,object,Javascript,Object,这里的相对JS新手试图理解定义JS对象的两种方法之间的区别 在某些情况下,我看到了一些我称之为“名称空间”对象或“处理程序”的示例,它们可能看起来像这样: var example = { message: null, setup: function( message ) { example.message = message; alert( message ); } } var example = function( message ) { .... }
var example = {
message: null,
setup: function( message ) {
example.message = message;
alert( message );
}
}
var example = function( message ) {
....
}
var example = function( message ) {
alert('message');
this.hello = function(){
alert('hello');
}
}
我可能会使用类似这样的方法对一些相关函数进行分组。如果我调用example('foo!')
,我会看到一条带有foo!的警告消息
出现,如果我调用example.message
我希望它返回foo代码>
我的第一个问题是:这种对象(未定义为函数)调用什么
我在我的站点中经常使用这样的对象,作为处理程序来为ajax交互等设置一系列绑定。我一直在尝试学习面向对象的javascript,并做了一些阅读(,)。在Mozilla文档中,建议将对象定义为函数,因此更像这样:
var example = {
message: null,
setup: function( message ) {
example.message = message;
alert( message );
}
}
var example = function( message ) {
....
}
var example = function( message ) {
alert('message');
this.hello = function(){
alert('hello');
}
}
我的第二个问题是:这种对象(定义为函数)调用什么
我真的不明白两者之间的区别,所以我有很多问题,这就引出了问题3:
如果将对象定义为函数,如果在实例化对象时不一定要执行属性,那么如何定义对象上的属性
即,如果我这样做:
var example = function( message ) {
alert('message');
}
然后我知道example('foo!')
将触发带有foo!的警报代码>。但是,如何在对象上定义其他属性或方法,以便以后访问和/或调用
我的第一个问题是:这类对象(不定义为
函数)调用
这是众所周知的
我的第二个问题是:这类对象(定义为
函数)调用
这是众所周知的
更多阅读资料:
如果将对象定义为函数,如何定义对象的属性
对象,如果您不一定希望它们在运行时执行
实例化
您可以使用this
关键字添加属性,也可以像这样使用prototype
属性:
var example = {
message: null,
setup: function( message ) {
example.message = message;
alert( message );
}
}
var example = function( message ) {
....
}
var example = function( message ) {
alert('message');
this.hello = function(){
alert('hello');
}
}
或
使用this
时,需要使用new
关键字来实例化对象
对OOP感兴趣的阅读:
- 斯托扬·斯特凡诺夫
这非常有帮助,谢谢!一个次要的子问题,在对象文字和函数表达式之间有什么主要的问题或微妙的区别吗?因为我习惯使用obj。文字如果我尝试使用函数表达式,有什么我应该特别小心的吗?也许值得注意,但是如果你从e=new example
中省略new
,这个函数中的引用全局对象(窗口
)。