2015-11-27 1 views
0

У меня есть следующий код:Объединить функцию с объектом с помощью метода расширения jQuery, почему возвращается только функция?

var object1 = function() {}; 
var object2 = {prop: "hello"}; 
$.extend(object1, object2) 

В Chrome консоли разработчика, когда тип object1 только функция возвращается. Но я могу напечатать object1.prop. Почему это?

+1

Если «только функция возвращается», вы имеете в виду, что у нее нет свойства 'prop', ну ... это, по-видимому, делает. Если речь идет о функции, отображаемой как функция 'function() {}' в консоли, ответ заключается в том, что функции не отформатированы таким образом, чтобы показать их свойства в консоли. – Ryan

+0

Привет @Ryan O'Hara, спасибо за комментарий. Да, мой вопрос касается консоли. Также зачем type typeof (object1), он возвращает 'function' – Dean

+0

Как писал Макми, '$ .extend' ставит свойства' object2' на 'object1'. Он остается функцией. – Ryan

ответ

1

extend метод из jquery doc:

Описание: Объединить содержимое двух или более объектов вместе в первый объект.

Когда вы сделаете это:

$.extend(object1, object2) 

, что вы говорите, «принять свойства object2 (prop = "hello") и хлопнуть их на object1 Поэтому то, что вы делаете, давая object1 свойство. называется prop

так еще один пример:.

// this object 
var colours = { red: 1, green: 2, blue: 3 }; 

// will be merged into this one below 
var people = { bob: 4, joe: 5 }; 

// like this! 
$.extend(people, colours); 

console.log(people); 

// prints { red: 1, green: 2, blue: 3, bob: 4, joe: 5 } 
1
var object1 = function() {}; 
var object2 = {prop: "hello"}; 
merged = $.extend(object1, object2) 
// function() {} 
merged.prop 
// "hello" 

функция с опорой будет возвращена;

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