سلام
تفاوت اصلی در خروجی هست که return میکنن
typeOf مشخص میکنه مقداری که بهش پاس داده شده از چه نوعی هست و یک string رو return میکنه که نشان دهنده نوع یا type هست
instanceOf تست میکنه که آیا آیکجت از نوع وارد شده هست یا نه و در نهایت نتیجه رو به صورت یک bool برمیگردونه (البته درست تر این هست که چک میکنه که آیا داخل prototype یک object یک prototype property که مشخص کردیم وجود داره یا نه)
console.log("this is function",function() {} instanceof Function);
console.log("this is string","string" instanceof String);
console.log("this is Array",[2] instanceof Array);
console.log("this is Object",obj={} instanceof Object);
console.log("this is Number",12 instanceof Number);