Цитата:
function inherits(Child, Parent) { Child.prototype = Object.create(Parent.prototype, { constructor: { writable: true, configurable: true, enumerable: false } }) } Вообще я бы посоветовал смотреть в сторону ES6, если хочется нормального ООП. Это еще неутвержденная спецификация Javascript, пока что на ней можно писать через компиляцию (спасибо kobezzza за ссылку). class Parent { constructor() { } method() { } } class Child extends Parent { static staticMethod() { } get getter() { } } |
Цитата:
Interface=function(init){ var o={} var base={ open: function(){console.log("virtual open")}, close: function(){console.log("virtual close")} } if(init){ o.open=init.open||base.open o.close=init.close||base.close }else{ o.open=base.open o.close=base.close } return function(){return Object.create(o)} } Class1=Interface({open: function(){console.log("just open")}}) Class2=Interface({close: function(){console.log("just close")}}) Class3=Interface() o1=Class1() o2=Class2() o3=Class3() o1.open(); o1.close(); o2.open(); o2.close(); o3.open(); o3.close() // just open // virtual close // virtual open // just close // virtual open // virtual close |
Цитата:
function Interface() {}; Interface.prototype.p1 = "property1"; function Class() {this.a=1; this.b=function(){alert(this.a)}}; Class.prototype = new Interface(); var obj = new Class(); alert([obj.p1, obj.a]); obj.b() |
Это ты не пизди, когда не знаешь.
Это не методы класса, это методы, присваемые инстансам класса при инициализации. При этом каждый новый инстанс будет иметь свою собственную пачку методов, что в большинстве случаев нецелесообразно и приводит к перерасходу памяти. Методы класса хранятся в прототипе. Кстати, с каких это пор ты стал употреблять ; и var? |
Цитата:
function Interface() {}; Interface.prototype.p1 = "property1"; function Class() {}; Class.prototype = Interface.prototype; var obj = new Class(); Обсуждали уже в начале топика, ему надо чтобы изменение дочернего класса не влияло на Interface, идиот. А ты написал то же самое, только мудреным синтаксисом (чтоб никто не догадался опять?) function inherits(Child, Parent) { Child.prototype = Object.create(Parent.prototype, { constructor: { writable: true, configurable: true, enumerable: false } }) } O=function(){} O.prototype={a:1} Child=function(){} inherits(Child, O) o=new Child console.log(o.a) Child.prototype.a=10 console.log(o.a) o1=new Child console.log(o1.a) // 1 // 10 // 10 Не лезь в треды, где мужики разговаривают, пиши жеквери, это самое твое. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 04:26. |