2016-12-21 1 views
-4

Недавно я начал изучать JavaScript. но у меня нет опыта проекта. Недавно посетил интервью на JavaScript:Как реализовать концепцию наследования в javascript?

Он спросил один вопрос о Inheritance: должно быть выглядеть следующим образом:

Мне нужен один метод, который называется Vehicle и другого two Methods Like one is Two-Wheeler and another one four-wheeler Method.

Если я создаю экземпляр для этих двух методов, как показано ниже

var two-wheeler1 = new two-wheeler("Shine","125 kph") ; 

другой экземпляр, как показано ниже

var four-wheeler1 = new four-wheller("audi","1000kph"); 

если напечатать

two-wheeler1.getWheeles() //it should print 2 wheels 

Если я напечатать

four-wheeler1.getWheeles() //it Should print 4 Wheels 

Как добиться этого. Не могли бы вы помочь мне?

+1

Прочитать весь этот документ => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript – Fefux

+0

Возможный дубликат [Переопределение методов в Javascript] (http://stackoverflow.com/questions/15497259/overriding-methods-in-javascript) –

+0

Обратите внимание: что - недействительно в качестве имени – Icepickle

ответ

1

Предположительно интервьюер и его компания программирования в современных JS (ES6 или машинопись). Если нет, вы, вероятно, должны найти другую компанию для собеседования. ES6 обеспечивает хороший чистый синтаксис для определения классов и отношения наследования:

class Vehicle { 
    constructor(brand, kmp) { 
    this.brand = brand; 
    this.kmp = kmp; 
    } 

    getWheels() { return `${this.nWheels} wheels`; } 
} 

class TwoWheeler extends Vehicle { 
    constructor(brand, kmp) { 
    super(brand, kmp); 
    this.nWheels = 2; 
    } 
} 

class FourWheeler extends Vehicle { 
    constructor(brand, kmp) { 
    super(brand, kmp); 
    this.nWheels = 4; 
    } 
} 

Кстати, в остальном мире мы называем двухколесных транспортных средств «мотоциклы» или «скутеры», и квадрациклы «Тачки».

+0

Спасибо за помощь. Для не только собеседований для понимания цели также вы могли бы помочь мне узнать, как достичь использования ES5 или Venila javascript. Для меня это большая помощь.Я прошу вас. Благодаря! – Siva

0

Пожалуйста, ознакомьтесь следующий код под стоять лучше ООП и наследование в JS:

function twoWheeler(brand, kmp) { 
    this.brand=brand; 
    this.kmp=kmp; 
    this.getWheeles=function() { 
    return "2 wheels" 
    }; 
    this.getVehicleInfo=function() { 
    return "Brand Name: " + this.brand + " Speed: " + this.kmp + " Type: 2 wheeler." 
    }; 
    } 

function fourWheller(brand, kmp){ 
    this.brand=brand; 
    this.kmp=kmp; 
    this.getWheeles=function() { 
    return "4 wheels" 
    }; 
    this.getVehicleInfo=function() { 
     return "Brand Name: " + this.brand + " Speed: " + this.kmp + " Type: 4 wheeler." 
    }; 
    } 

    fourWheller.fourWheller= new twoWheeler(); 
    fourWheller.prototype.constructor=fourWheller; 

    var twoWheeler1 = new twoWheeler("Shine","125 kph"); 
    var fourWheller1 = new fourWheller("Audi","1000kph"); 

    console.log(twoWheeler1.getWheeles()) 
    console.log(fourWheller1.getWheeles()) 

    console.log(twoWheeler1.getVehicleInfo()) 
    console.log(fourWheller1.getVehicleInfo()) 
+0

Я смущен. Вы получаете двухколесные автомобили с четырехколесных транспортных средств? Где запрашивается класс «Vehicle»? Что делает 'fourWheeler.fourWheeler = new twoWheeler();' do? Зачем вам нужно установить конструктор в прототипе для своего собственного класса - это происходит автоматически, не так ли? Кстати, это «wheeler», а не «wheller» и «колеса», а не «колеса». –

+0

Я не даю ответ интервьюеру, я просто пытаюсь научить его первичной идее о ООП и наследовании, и он присутствует в моем ответе. – Hanif

+0

@Hanif, Здесь мы переписываем свойства каждой функции, так же хорошо ли это для производительности? – Siva