これは特にknockout.jsに関連していますか、それとも単純なECMAScriptの問題を並べ替えようとしているだけですか?どれでも...
通常、宣言が行われる場所では関数式を使用しないのが最善です。コンストラクターは、コンストラクターであることを他の人に知らせるために大文字で始める必要があります。
function App() {
var self = this;
なぜそうしたいのかは不明です。これへの参照を保持することは、コンストラクターでは一般的ではありません。
this.index = 0;
myfunction = function(){
ここで問題が発生します。consructorが初めて呼び出されると、上記はmyfunctionという名前のグローバル変数を作成します。そのprobabyはあなたがやりたいことではありません。関数宣言は、明確にローカルに留まります。ただし、関数はとにかくApp.prototypeにあるはずです。
function myFunction() {
。
//how can i modify index here
self.index = 1;
};
その関数はインデックスプロパティを変更しますが、それが呼び出された場合に限ります。だからあなたがするかもしれないことは:
function App(){
this.index = 0; // Each instance will have an index property
}
// All instances will share a myfunction method
App.prototype.myfunction = function() {
this.index = 1;
console.log(this.index);
}
var app = new App();
app.myfunction(); // 1