2013-06-29 2 views
-2
var x = function(){ 
    this.add = function (a,b){ return a + b;} 
} 

var x = function(){}; 
x.add = function (a,b){ return a + b;}; 

var x = function(){} 
x.prototype.add = function (a,b){ return a + b;} 

var x = {}; 
x.add = function (a,b){ return a + b;} 

Может кто-нибудь объяснить разницу между различными объявлениями выше?Различия между разными шаблонами JavaScript

Благодаря

+3

** 1) ** один ставит функцию на 'this' внутри функции, но мы не знаем, что это такое. ** 2) ** ставит функцию на функцию. ** 3) ** ставит функцию на объект прототипа функций. ** 4) ** создает простой объект и помещает на него функцию. ..... Что вы подразумеваете под различиями? Что ты не понимаешь? Что ты понимаешь? Вы понимаете их? Ваш вопрос расплывчатый. –

+0

Спасибо за помощь @CrazyTrain. Получил мой ответ здесь http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript – Arun

ответ

2
  1. Объявляет «класс», который может быть реализован с помощью new x, который будет иметь открытый метод «добавить», «это» здесь, относится к объекту себя после того, как будет создан экземпляр.

  2. Добавляет «статический» метод для функции x, это возможно, потому что функции являются объектами.

  3. Добавляет функцию «добавить» к прототипу x, и все экземпляры x будут унаследованы.

  4. Добавляет свойство «добавить» к объекту x и задает его определению функции. Это похоже на создание экземпляра без создания класса.

+0

Спасибо за ваш ответ @Lex. Это был дублирующий вопрос http://stackoverflow.com/questions/310870/use-of-prototype-vs-this-in-javascript. – Arun

Смежные вопросы