2013-07-26 2 views
1

Из следующих двух способов вызова метода в JavaScript;Метод вызова в JavaScript

  1. myFunc (params);
  2. obj.myFunc();

Мои вопросы:

  1. Для каждого из них, что именно разница в доступе значения (для параметров/объект) внутри MyFunc()
  2. Для 1-й случай, когда мы используем «это» внутри MyFunc() , он будет ссылаться на глобальное obj (окно). Как насчет второго случая?
  3. Каковы варианты использования одного из двух методов?

Вы можете добавить любые другие существенные различия между двумя методами. Пожалуйста, предложите.

+2

Так каковы ваши предположения? – elclanrs

+0

Я бы добавил в список myFunc.call (это, параметры), всегда о прототипе :) –

+0

Что бы там не было? – testndtv

ответ

-1

Я вновь вынести вопросы:

3- Случаев: your_obj.function(): это один обычно используются в одной странице веб-приложении или у вас есть много модулей одну одну страницы, и вы хотите, чтобы отделить модулей для поддержания целей. Хотя myfunction (args) - глобальное использование.

2 - вы можете вызвать его: window.your_obj.function()

1 - Я не уверен, что вы имеете в виду :)

Это мое мнение.

1

Поскольку вы не предоставили достаточно контекста, я буду считать ваши два вызова функции:

1. myFunc(params) 
2. obj.myFunc() 

соответствуют следующим определениям myFunc() и obj.myFunc():

function myFunc(params) { } 

var obj = { 
    myFunc: function() { } 
}; 

Первый вызов myFunc(params) представляет собой вызов глобальной функции myFunc() с params передан как параметр. this будет ссылаться на глобальный объект, который window внутри браузеров (Вы можете проверить это, выполнив window.myFunc === myFunc, который будет возвращать true)

Второй вызов obj.myFunc() это вызов к методуmyFunc() внутри obj объекта. this будет ссылаться на obj, неwindow.

Что касается вариантов использования, которые будут зависеть от вашего дизайна, но глобальные функции, очевидно, не рекомендуются, поскольку они загрязняют глобальное пространство имен (т. Е. Вы можете переопределить глобальный myFunc() случайно, не заметив его).

Второй подход является общим, когда вам нужен псевдо Javascript namespace

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