Объяснение объявления функции jQuery - PullRequest
2 голосов
/ 13 декабря 2011

Я открыл библиотеку jQuery 1.7.1 и хотел изучить код, но обнаружил, что функции объявлены странным образом (для меня).Например:

show: function() {
        //some code here
},

Я научился определять функцию следующим образом:

function show() {
  //some code here
}

Может кто-нибудь объяснить мне, почему функция show не написана вторым способом (как в большинстве уроков в интернете)?

Ответы [ 4 ]

6 голосов
/ 13 декабря 2011

Это потому, что он находится внутри объекта. Object Literals имеют свои свойства, определенные следующим образом:

{
    name: value,
    //OR
    'name': value
}

Где значением может быть почти что угодно, например число, строка, функция или даже другой объект. В JavaScript вы также можете объявить anonymous functions и присвоить их переменной. Фактически, следующие объявления имеют одинаковый эффект:

//declares the myFunc1 function
function myFunc1() {}
//declares an anonymous function and assigns it to myFunc2
var myFunc2 = function() {};

//you can now call either like so:
myFunc1();
myFunc2();

Итак, комбинируя эти два понятия, если у меня есть объект и я хочу, чтобы одно из его свойств было функцией, я бы сделал это так:

var myObj = {
    name: 'My Object',
    init: function() {
        return 'Initializing!';
    },
    version: 1.0
};

alert(myObj.init());

Затем вы получите вывод: Initializing!. Обязательно ознакомьтесь с отличной документацией и учебными пособиями по Mozilla Developer Network , включая их JavaScript Tutorial Series

Надеюсь, это поможет!

5 голосов
/ 13 декабря 2011

Первый способ - это, по сути, установка функции как свойства объекта.

Например:

// I can create a new empty object
var myObject = {};

// or I can create a new object with a basic property
var myObject = { 
        color: "blue" 
    };

// I can also create an object with methods (like jQuery)
var myObject = { 
        color: "blue", 
        showColor: function(){ 
            alert(this.color); 
        } 
    };

// and you can use the object like this
myObject.showColor(); // calls the showColor method and will alert "blue"

Это помогает jQuery инкапсулировать, создавать пространство имен и организовывать код.

Вот несколько хороших рецензий:

2 голосов
/ 13 декабря 2011

Первое объявление, т. Е. show: function, определяет show как поле в объекте, имеющем функцию типа.Второй объявляет функцию с именем show в текущей области (возможно, глобальную?)

1 голос
/ 13 декабря 2011

они описываются как объектная функция js. В этом случае:

var jQuery = {
    show: function(){
        //some code here
    }
}

так что вы получаете к нему доступ, например, как jQuery.show ().

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...