以下源码都来自webkit:
var d=Date() 与 var d=new Date的区别
前者只是一个普通的函数调用,是通过JSValue.getCallData来执行的,而后者是创建一个对象是通过 JSValue.getConstructData来执行的
因此两者可能存在本质的区别,区别在于调用返回时callData.native.function指向何处
通过对javascript core的分析可知,前者只是返回一个string,而后者则是创建了一个date对象
前者对应代码:
static JSValuePtr callDate(ExecState* exec, JSObject*, JSValuePtr, const ArgList&)
{
DBUG_ENTER();
time_t localTime = time(0);
tm localTM;
getLocalTime(&localTime, &localTM);
GregorianDateTime ts(localTM);
return jsNontrivialString(exec, formatDate(ts) + " " + formatTime(ts, false));
}
CallType DateConstructor::getCallData(CallData& callData)
{
DBUG_ENTER();
callData.native.function = callDate;
return CallTypeHost;
}
后者对应的代码:
static JSObject* constructWithDateConstructor(ExecState* exec, JSObject*, const ArgList& args)
{
DBUG_ENTER();
return constructDate(exec, args);
}
ConstructType DateConstructor::getConstructData(ConstructData& constructData)
{
DBUG_ENTER();
constructData.native.function = constructWithDateConstructor;
return ConstructTypeHost;
}
同样可以分析出var a=Array()和var a=new Array()是相同的
static JSObject* constructWithArrayConstructor(ExecState* exec, JSObject*, const ArgList& args)
{
DBUG_ENTER();
return constructArrayWithSizeQuirk(exec, args);
}
// ECMA 15.4.2
ConstructType ArrayConstructor::getConstructData(ConstructData& constructData)
{
DBUG_ENTER();
constructData.native.function = constructWithArrayConstructor;
return ConstructTypeHost;
}
static JSValuePtr callArrayConstructor(ExecState* exec, JSObject*, JSValuePtr, const ArgList& args)
{
DBUG_ENTER();
return constructArrayWithSizeQuirk(exec, args);
}
// ECMA 15.6.1
CallType ArrayConstructor::getCallData(CallData& callData)
{
DBUG_ENTER();
// equivalent to 'new Array(....)'
callData.native.function = callArrayConstructor;
return CallTypeHost;
}
分享到:
相关推荐
直接上代码: <!DOCTYPE html> <html lang=en> <head>... var _input = document.getElementById('input');... var date = new Date(); var seperator = /; var year = date.getFul
var date = new Date(); ``` #### 2. 获取年月日时分秒 通过日期对象的方法可以获取到年份、月份、日期、小时、分钟和秒等信息。需要注意的是,`getMonth()`方法返回的月份是从0开始计数的,因此需要加上1才能得到...
var dateStr = new Date("October 13, 1975 11:13:00"); ``` - **传递数字**:根据指定的年份、月份等数字创建`Date`对象。 ```javascript var dateNum = new Date(2023, 11, 12); // 注意月份是从0开始计数的 ...
var date = new Date(parseInt(jsonDate.replace("/Date(", "").replace(")/", ""), 10)); return date; } ``` 该函数首先通过正则表达式去除JSON日期格式中的特殊字符,然后将剩余的时间戳部分转换为整数,并...
var date = new Date(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); // 将小时、分钟、秒数格式化为两位数 hours = formatTime(hours); minutes = ...
var time = new Date(); var expireDate = new Date(); expireDate.setTime(time.getTime() + 30 * (24 * 60 * 60 * 1000)); dateStr = formatCookieDate(expireDate,IE); setCookie("userName",userName,...
const targetDate = new Date(new Date().getFullYear(), 9, 1); const currentDate = new Date(); const remainingTime = targetDate - currentDate; const days = Math.floor(remainingTime / (1000 * 60 * 60...
var date = new Date(); var hour = date.getHours(); var minute = date.getMinutes(); // 设置的闹钟的时间 var alarmHour = 10; var alarmMinute = 30; // 要求的闹钟执行的函数 function alarm() { ...
Javascript获取上月、下月 var arr = date.split('-'); var year = arr[0];... //var days = new Date(year, month, 0); //days = days.getDate(); //获取当前日期中的月的天数 var year2 = year;
function RunGLNL(){ var today=new Date(); var d=new Array(“星期日”,”星期一”,”星期二”,”星期三”,”星期四”,”星期五”,”星期六”); var DDDD=(today.getYear()<100 ? today.getYear()+1900:today....
var time = new Date(shijianchuo); var y = time.getFullYear(); var m = time.getMonth()+1; var d = time.getDate(); var h = time.getHours(); var mm = time.getMinutes(); var s = time.getSeconds(); ...
本文实例介绍了javascript实现简单...var today=new Date() var h=today.getHours() var m=today.getMinutes() var s=today.getSeconds() // add a zero in front of numbers<10 m=checkTime(m) s=checkTime(s) docu
var date = new Date(v); var y = date.getFullYear(); var m = date.getMonth()+1; m = m<10?'0'+m:m; var d = date.getDate(); d = d<10?("0"+d):d; var h = date.getHours(); h = h<10?("0"+h):...
var date=new Date(); var dat=document.all.item('a1').value; var a2=document.all.item('a2').value; var year="",y="",y2="",month="",m="",m2="",day="",d="",d2="",hour="",h="",h2="",hte1=0,hte2=0,minute=...
var myDate = new Date(); console.log(myDate.getFullYear()); // 输出完整年份 console.log(myDate.getYear()); // 输出从1900开始的年份 ``` ##### 2.2 获取月份 - `getMonth()`:获取当前日期所在的月份(0-11...
var d = new Date("2014-10-10"); d.setDate(d.getDate() + 10); var nd = d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); alert(nd); ``` 通过`setDate`方法,我们可以轻松地修改日期值。需要...
var dt = new Date(); console.log(dt); // 输出当前日期和时间 ``` - `new Date(milliseconds)`:从1970年1月1日00:00:00 UTC(不考虑时区)开始,以毫秒为单位创建Date对象。例如,向前或向后移动一分钟: `...
var date = new Date(temp[0],temp[1],temp[2]); return date; } var start = "2012-3-25"; var end = "2012-4-3"; var startTime = getDate(start); var endTime = getDate(end); while((endTime
today = new Date(); // 创建一个Date对象,用于获取当前的日期和时间。 var day; // 用于存储星期几的字符串表示。 var date; // 该变量未被使用。 ``` ##### 2. 星期几的判断与赋值 ```javascript if (today....
var date = new Date(year, month, day); var tr = document.createElement('tr'); // 创建并添加日期单元格 var td = document.createElement('td'); td.textContent = day; td.date = date; // 检查是否...