为什么我不能这样做?
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
关于如何完成的任何想法?
为什么我不能这样做?
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
关于如何完成的任何想法?
within foo
, this
references MyObject
,这意味着之后:
MyObject.foo();
您可以致电:
MyObject.sayhello();
如果你想能够调用MyObject.foo.sayhello()
,你需要sayhello
成为一个函数MyObject.foo
:
var MyObject = {}
MyObject.foo = function () {...};
MyObject.foo.sayhello = function () {
alert('hello');
}
如果你不需要foo
也是一个函数,你可以简单地声明:
var MyObject = {
foo: {
sayhello: function () {
alert('Hello');
}
}
}
这将允许您致电:
MyObject.foo.sayhello();
您必须先调用MyObject.foo()
,以便this.sayhello
实际添加该函数。然后你应该可以打电话MyObject.foo.sayhello();
var MyObject = {}
MyObject.foo = {
sayhello: function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
那是因为该功能还不存在。因此,您必须先调用 foo。你所做的是从属性 foo 调用函数 sayhello。但是你没有属性 foo。你有一个函数 foo.
但你也可以这样做并使其成为链式,就像 jQuery 所做的那样:
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
return this;
}
MyObject.foo().sayhello();
在对象 foo 中创建一个 sayhello 函数,而不是链式函数。而是一个对象里面有一个函数的对象。
var MyObject = {
foo : {
sayhello : function(){
alert("hello");
}
}
}
MyObject.foo.sayhello(); // Now does work!