jQuery - 这个语法是什么意思?

时间:2011-09-22 20:06:29

标签: javascript jquery

我正在看jquery.ui-1.8.11.js:

$.extend(Datepicker.prototype, {
    /* Class name added to elements to indicate already configured with a date picker. */
    markerClassName: 'hasDatepicker',

    /* Debug logging (if enabled). */
    log: function () {
        if (this.debug)
            console.log.apply('', arguments);
    },

log: function()语法是什么?它叫什么?如何使用?

4 个答案:

答案 0 :(得分:4)

$.extend调用的第二个参数是Object。它们是使用花括号{}定义并使用key: value对。该值可以是函数,这是log

所发生的事情

这类似于以下内容:

var myObject = {
  prop1: 'some value',
  prop2: 'some other value',
  method1: function () {
    // some code here.
  }
}

您可以稍后调用myObject.method1()来执行函数内的任何代码。

答案 1 :(得分:2)

它正在扩展Datepicker.prototype对象上的对象属性。

例如,在运行该语句之后,您可以执行以下操作:

 alert(new Datepicker().markerClassName); // alert('hasDatepicker');

 // OR

 new Datepicker().log(); // calls the function

基本上,$.extend()允许您使用其他属性修改对象(或覆盖它们)。请考虑以下对象:

 var obj = { Text: 'Hello World' };

 alert(obj.Text); // Hello World

 $.extend(obj, {
     Text: 'Something Else',
     func: function() { alert('Stuff'); }
 });

 alert(obj.Text); // Something Else
 obj.func();

答案 2 :(得分:0)

此语法使用JavaScript原型来扩展Datepicker对象并添加其他属性和函数。这会将Datepicker.log添加为函数和Datepicker.markerClassName。

答案 3 :(得分:0)

第二个参数(以大括号{开头,以大括号}结束)到$.extend()来电是对象字面 。一般来说,它是使用new Object显式创建对象的简写。这些大致相同:

var foo = new Object;
foo.bar = 'bar';

var foo = {
    bar: 'bar'
};

值得注意的是,函数的分配方式,它们是匿名函数,被指定为对象属性的值。如:

var foo = new Object;
foo.method1 = function() { ... };

也可以使用命名函数:

function fn1() { ...}
foo.method2 = fn1;

或者:

foo.method3 = function fn2() { ... };

或者:

var foo = {
    method4: function fn3() { ... }
};

还有其他一些对JavaScript中的速记有用的文字,例如Array文字:

var arr = ['members', 'are', 'separated', 'by', 'commas'];

RegExp文字(请注意,解析RegExp文字与将字符串传递给new RegExp()没有相同的转义规则):

var exp = /some pattern/g; // Modifiers are after the closing slash