我正在看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()
语法是什么?它叫什么?如何使用?
答案 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