我想達到的一個構造函數擴展方法,並用它來初始化實例,如:混淆有關原型繼承在JavaScript
var view_instance = View.extend()
所以我嘗試這樣的:
define(function (require, exports, module) {
function View(size, color) {
this.size = size;
this.color = color;
};
View.prototype = {
show: function() {
console.log("This is view show");
}
}
View.extend = function (props) {
var tmp = new this("12", "red");
console.log(this);
console.log(tmp instanceof this) //true
console.log(tmp.prototype); //undefined!
return tmp
}
return View;
})
在上面的extend
方法中,我通過new this()
初始化一個實例,但是我無法登錄它的原型,並且我檢查了this
是對的。
那麼,我的代碼有什麼問題?爲什麼原型消失?我該怎麼做對不對?
呦使用[的Object.create您自擔風險使用它](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create)now – aaronman
@aaronman:我試着自己做一個 – hh54188