是否有可能使我自己的函數在JavaScript中實現?使用__invoke魔術方法讓javascript對象像php對象一樣?是否有可能從JavaScript Function對象繼承?
A = function(){};
A.prototype = new Function();
var a = new A();
alert(a instanceof Function); // true
a(); // exception
不能回答我的問題...有一個答案:
對不起everebody,但我已經找到了好的方法對我的工作(我是在幾個步驟從答案離開時發佈題)。我不會刪除問題,希望有人會花更少的時間,然後我。
A = function()
{
var f = function() { alert('f called') };
f.__proto__ = A.prototype;
return f;
};
A.prototype = Function();
A.prototype.method = function() { alert('method called') };
var a = new A();
alert(a instanceof Function); // true
alert(a instanceof A); // true
a(); // f called
a.method(); // method called
如果是新手的問題,請給我發email,我會刪除它。謝謝!
什麼?簡單地將'a'作爲一個具有所需行爲的函數缺乏什麼? – davin 2012-02-24 19:26:57
閱讀http://www.crockford.com/javascript/inheritance.html – 2012-02-24 19:28:51
@Leo您的解決方案在IE中不起作用,因爲該瀏覽器沒有實現'__proto__'。另外,請注意'__proto__'是非標準的,它被**棄用**,所以它可能不是一個好主意,依靠它... – 2012-02-24 19:42:22