2016-08-17 107 views
-2

定義構造函數我在common.js文件中的JavaScript對象:麻煩在Javascript

var KITS= 
{ 
    debug: false, 
    default_country : 'xxx', 
    franchise : '' 
}; 

KITS.init=function(cb) 
{ 
    var self = this; 
    $.ajax({ 
     // ... 

      if (typeof cb==='function') (cb)(); 
     }, 
    }); 

    if (typeof cb==='function') (cb)(); 
}; 

我包括這個js文件中的PHP文件。請問一些專家,請告訴我需要做什麼,以便在創建KITS對象時自動調用KITS.init()。

回答

0

你需要真實constructor

function KITS() { 
    // This is contructor method 
    console.log('hello world!'); 

    // Call your init method if you want 
    this.init(); 
} 
KITS.prototype = { 
    constructor: KITS, 
    init: function() { 
     // Do some staff here 
    } 
}; 

var kits = new KITS(); 

工作實例https://jsfiddle.net/61feepq5/1/

+1

不要忘記把'this.init();'放在構造函數的末尾,否則OPs問題還沒有解決。 :) – Shilly

0

對象文字不是用new創建的,所以即使它們有一個也不會觸發構造函數。他們沒有構造,由於沒有一個原型自己:

const foo = { 
 
    a: 1, 
 
    b: 2 
 
}; 
 
console.log(Object.getPrototypeOf(foo));

+0

他們有原型,他們沒有'prototype'屬性。 – Maxx

+0

@Maxx修正了措詞。他們有一個原型,而不是他們自己的。 – ssube

+0

你的意思是?如果你用這種方式創建對象,它將會有空的對象原型。 – Maxx