访问函数 javascript
accessing function javascript
如何从其他命名空间访问函数?
例如:
FavoriteFlavor.instructState.prototype = {
test: function() {
// call function show from chooseEmoticonState
// I have tried calling FavoriteFlavor.chooseEmoticonState.show();
}
}
FavoriteFlavor.chooseEmoticonState.prototype = {
show: function() {
}
}
一种方法是直接从 prototype
对象调用方法:
FavoriteFlavor.chooseEmoticonState.prototype.show();
但是,任何 this
实例引用都不会指向 instructState
的实例。您可以通过使用 call
or apply
方法并将 this
作为第一个参数传递来更正此问题。
FavoriteFlavor.chooseEmoticonState.prototype.show.call(this);
此外,除非您有理由不这样做,否则您可以简单地将 chooseEmoticonState
原型的 show
方法添加到 instructState
原型。
FavoriteFlavor.instructState.prototype.show = FavoriteFlavor.chooseEmoticonState.prototype.show;
show
函数在 FavoriteFlavor.chooseEmoticonState.prototype
上,而不是 FavoriteFlavor.chooseEmoticonState
,因此您 可以 调用它:
FavoriteFlavor.chooseEmoticonState.prototype.show();
但考虑到它在原型上,直接调用它并没有多大意义。
在 chooseEmoticonState
:
的实例上调用它才有意义
// assume chooseState has been instantiated with
// new FavoriteFlavor.chooseEmoticonState();
chooseState.show();
或者如果 show()
不是一个实例方法,直接放在 FavoriteFlavor.chooseEmoticonState
:
FavoriteFlavor.chooseEmoticonState = {
show: function() {
}
};
和然后你可以用你之前尝试过的方式来称呼它:
FavoriteFlavor.choseEmoticonState.show();
采用不同的 javascript 模式:(只是为了多样性)
FavoriteFlavor = {};
FavoriteFlavor.chooseEmoticonState = (function(){
//private
var myprivate = "im private";
function show(){
alert("goo")
}
return {
show : show //its making me public
}
})();
FavoriteFlavor.instructState = (function(){
//private
var myprivate = "im private";
FavoriteFlavor.chooseEmoticonState.show();
})();
如何从其他命名空间访问函数?
例如:
FavoriteFlavor.instructState.prototype = {
test: function() {
// call function show from chooseEmoticonState
// I have tried calling FavoriteFlavor.chooseEmoticonState.show();
}
}
FavoriteFlavor.chooseEmoticonState.prototype = {
show: function() {
}
}
一种方法是直接从 prototype
对象调用方法:
FavoriteFlavor.chooseEmoticonState.prototype.show();
但是,任何 this
实例引用都不会指向 instructState
的实例。您可以通过使用 call
or apply
方法并将 this
作为第一个参数传递来更正此问题。
FavoriteFlavor.chooseEmoticonState.prototype.show.call(this);
此外,除非您有理由不这样做,否则您可以简单地将 chooseEmoticonState
原型的 show
方法添加到 instructState
原型。
FavoriteFlavor.instructState.prototype.show = FavoriteFlavor.chooseEmoticonState.prototype.show;
show
函数在 FavoriteFlavor.chooseEmoticonState.prototype
上,而不是 FavoriteFlavor.chooseEmoticonState
,因此您 可以 调用它:
FavoriteFlavor.chooseEmoticonState.prototype.show();
但考虑到它在原型上,直接调用它并没有多大意义。
在 chooseEmoticonState
:
// assume chooseState has been instantiated with
// new FavoriteFlavor.chooseEmoticonState();
chooseState.show();
或者如果 show()
不是一个实例方法,直接放在 FavoriteFlavor.chooseEmoticonState
:
FavoriteFlavor.chooseEmoticonState = {
show: function() {
}
};
和然后你可以用你之前尝试过的方式来称呼它:
FavoriteFlavor.choseEmoticonState.show();
采用不同的 javascript 模式:(只是为了多样性)
FavoriteFlavor = {};
FavoriteFlavor.chooseEmoticonState = (function(){
//private
var myprivate = "im private";
function show(){
alert("goo")
}
return {
show : show //its making me public
}
})();
FavoriteFlavor.instructState = (function(){
//private
var myprivate = "im private";
FavoriteFlavor.chooseEmoticonState.show();
})();