爲什麼我不能這樣做?Javascript對象方法
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
有關如何完成的任何想法?
爲什麼我不能這樣做?Javascript對象方法
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
有關如何完成的任何想法?
您必須先致電MyObject.foo()
,以便實際添加this.sayhello
函數。那麼你應該比布爾調用MyObject.foo.sayhello();
這是錯誤的,您應該能夠調用'MyObject.sayhello()'而不是'MyObject.foo.sayhello()',因爲'this'引用了'MyObject'。 – zzzzBov
內foo
,this
引用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();
var MyObject = {}
MyObject.foo = {
sayhello: function(){
alert('Hello');
}
}
MyObject.foo.sayhello();
這是因爲該功能尚不存在。因此,您必須先致電foo。你所做的就是從屬性foo調用函數sayhello。但你沒有財富富。你有一個函數foo。
但你也可以做到這一點,使它鏈,如jQuery做:
var MyObject = {}
MyObject.foo = function(){
this.sayhello = function(){
alert('Hello');
}
return this;
}
MyObject.foo().sayhello();
做一個函數裏面的SayHello對象foo,所以不是一個鏈接功能。但是具有函數的對象內的對象。
var MyObject = {
foo : {
sayhello : function(){
alert("hello");
}
}
}
MyObject.foo.sayhello(); // Now does work!
[Javascript函數指針分配]的
是的,但這意味着我必須在方法之間使用逗號,所以NetBeans導航器不會映射方法... – xavip
可能重複(http://stackoverflow.com/questions/2326072/javascript-function-pointer-assignment) – atk
http://stackoverflow.com/questions/2326072/ javascript-function-pointer-assignment – atk
@atk,我不相信鏈接的問題與此處提到的內容有關。 – zzzzBov