如何在Javascript中實現繼承?我開始使用Knockout.js並實現ViewModels/page。不過,我有一些函數/代碼,我希望它在所有ViewModels中共享。如何在JavaScript中實現繼承?
我想知道如何在這種情況下實現繼承?
如何在Javascript中實現繼承?我開始使用Knockout.js並實現ViewModels/page。不過,我有一些函數/代碼,我希望它在所有ViewModels中共享。如何在JavaScript中實現繼承?
我想知道如何在這種情況下實現繼承?
繼承可能不一定是答案。爲什麼不用每個ViewModel應該實現的所有方法創建一個對象字面值。我不熟悉淘汰賽,但以下是您可以在本地js中完成的方式。
var sharedMethods = {
run: function() {},
jump: function() {}
};
function Person() {};
// Use jQuery's extend method
// Now person has run, jump, and talk
$.extend(Person.prototype, sharedMethods, {
talk: function() {}
});
Here's the link from crockford.com
它最好的地方,瞭解面向Javascript對象什麼。
雖然他的方法起初並不太明白。由於他持續參與JavaScript語言的開發,推廣數據格式JSON(JavaScript Object Notation)以及開發各種與JavaScript相關的工具,如JSLint和JSMin,因此最出名的最佳資源之一是 。
JavaScript提供了原型繼承。對象從其他對象繼承。這對於方法繼承來說可以很好,但對於屬性繼承不起作用。
通常繼承方法,你可以使用:
function BaseViewModel() {
var self = this;
self.name = ko.observable();
}
function Person() {
var self = this;
self.firstname = ko.observable();
}
Person.prototype = new BaseViewModel();
但是,這會導致所有的人共享同一個對象作爲原型!當你改變一個人的名字時,價值get會傳播給所有的人。我傾向於使用jQuery的擴展方法。
function Person() {
var self = this;
$.extend(self, new BaseViewModel());
self.firstname = ko.observable();
}
這樣從BaseViewModel值被複制到人。
[here](http://www.codeproject.com/Articles/303796/How-to-Implement-Inheritance-in-Javascript)你會找到你所需要的。 – Sajmon
[在Javascript中執行繼承]的可能重複(http://stackoverflow.com/questions/1586915/performing-inheritance-in-javascript) – JJJ
或者您可以使用coffeescript方式並使用它的語法來創建類並從一個類繼承另一個。更多的細節在coffeescript.org上。最後,它編譯爲標準的OO javascript,但在處理類時要讀取和寫入更容易。 – Tallmaris