下面這不會引發任何錯誤:類型錯誤:不使用的功能,當新
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
};
Function.method('inherits', function (Parent) {
this.prototype = new Parent();
this.prototype.construct = this;
});
var p = function(){}
var c = function(){}
c.inherits(p)
但下面這引發了「類型錯誤:_a.inherits是不是一個功能」:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
};
Function.method('inherits', function (Parent) {
this.prototype = new Parent();
this.prototype.construct = this;
});
//var p = function(){}
//var c = function(){}
function a(){}
function b(){}
_a = new a();
_b = new b();
_a.inherits(_b)
從我讀到的,新的返回值是一個函數。它必須是一個函數,因爲它具有可以使用和分配的原型屬性以及指向自身的構造函數屬性。在原型查找算法中,在通過Object.prototype之前,它應該在Function.prototype中發現「繼承」。沒有?
爲什麼你認爲在'kid'存在'inherits'方法? – user2357112 2014-08-28 04:08:06
@ user2357112因爲kid是一個函數,並且在Function.prototype上創建了繼承,並且原型查找算法在碰到Object.prototype之前應該通過Function.prototype。 – JohnMerlino 2014-08-28 04:09:54
@ user2357112它只有在使用new關鍵字時纔會失敗。沒有新的關鍵字,不會引發錯誤。新的關鍵字應該返回一個函數,畢竟只有函數有一個原型屬性和一個指向函數本身的構造函數。 – JohnMerlino 2014-08-28 04:20:16