function Test (word) {
console.log (word);
}
Test('哈哈,我是函數');
new Test('哈哈,我是對象');
//將以上的調用方式換種通俗易懂的方式
Test.call("哈哈,我是函數"); //相當於Test();
//相當於new Test();
var obj = {};
obj._proto_ = Test.prototype;
Test.call(obj);
本質的區別就是,兩次調用之中的this不同。調用Test('...');的時候,里面的this是頂級對象window,返回值是undefined。調用new Test('...');的時候,它會先new一個對象,置類型為Test,之后把它作為this執行Test函數,最后再把對象返回。
來源於sf
