(1)作為構造器呼叫
利用new
關鍵字可以不帶括號地呼叫函式:
function greet()
new greet; // parentheses are optional in this construct.
new
操作符的語法為:
new constructor[([arguments])]
(2)隱性實現 tostring 或者 valueof 的呼叫
另乙個例子就可以隱性呼叫tostring
或者valueof
方法:
var greet =
}greet + ''; // 字串連線會強制性轉化到string型別,這樣就隱性呼叫了tostring
可以利用這種方式呼叫任意的函式:
function func()
var greet =
greet + '';
或者使用valueof
:
function func()
var greet =
+greet;
如果要使用valueof的話,可以在function的原型中完成複寫,這樣也能完成乙個函式的傳遞:
function.prototype.valueof = function() ;
function greet()
+greet;
(3)iterators
function* func()
var greet = {};
greet[symbol.iterator] = func;
[...greet];
一般來說用迭代器的時候都會附帶乙個yield
語句,但是在這邊希望呼叫某個函式的時候不一定要加上這個語句。上述**中是最後乙個語句呼叫了函式,同時也可以利用解構賦值來進行呼叫
[,] = greet;
或者使用for ... of結構:
for ({} of greet);
(4)getters
function func()
object.defineproperty(window, 'greet', );
greet;
也可以利用object.assign
:
object.assign(window, });
greet;
全域性將window
物件替換成乙個你自定義的全域性物件。
(5)tagged template literals
es6中可以利用模板字串的方式呼叫:
function greet()
greet``;
JavaScript中prototype的理解
prototype使我們能夠向物件新增屬性或者方法。語法 object.prototype.name value 2.基於原型的繼承 obj2 和obj3都是函式foo的例項,可以看到每個例項不僅有自己自身的屬性,還具有原型鏈上的x 也就是foo.prototype 3.prototype與原型 通...
javascript中處理時間
var mydate new date mydate.getyear 獲取當前年份 2007 mydate.getfullyear 獲取完整的年份 2007 mydate.getmonth 獲取當前月份 0 11,0代表1月 11 mydate.getdate 獲取當前日 1 31 20 mydat...
javascript中處理時間
var mydate new date mydate.getyear 獲取當前年份 2007 mydate.getfullyear 獲取完整的年份 2007 mydate.getmonth 獲取當前月份 0 11,0代表1月 11 mydate.getdate 獲取當前日 1 31 20 mydat...