标签:
function与object是数据类型,Function与Object是两个函数对象的标识符(等价于两个函数对象),Function与Object的数据类型都是function.
首先我们看下面的例子(typeof 表示数据类型,instanceof表示实例类型---用原型链查找):
var a = function(){};
var b = {};
var c = 1;
var d;
var e = null;
var f = false;
var g = "";
console.log( typeof a);//function
console.log( a instanceof Function);//true
console.log( a instanceof Object);//true
console.log( typeof b);//object
console.log( b instanceof Function);//true
console.log( b instanceof Object);//true
console.log( typeof c);//number
console.log( c instanceof Function);//false
console.log( c instanceof Object);//false
console.log( typeof d);//undefined
console.log( d instanceof Function);//false
console.log( d instanceof Object);//false
console.log( typeof e);//object
console.log( e instanceof Function);//false
console.log( e instanceof Object);//false
console.log( typeof f);//boolean
console.log( f instanceof Function);//false
console.log( f instanceof Object);//false
console.log( typeof g);//string
console.log( g instanceof Function);//false
console.log( g instanceof Object);//false
javastcript中六种数据类型number,string,boolean,undefined,object,function.注意null是不属于数据类型,null只表示数据值,null的数据类型是object,由此number,string,boolean,undefined为值类型,object,function为引用类型.然后object和Object,function和Function表示的意义是不同的,小写的是数据类型,大写的是函数标识对象.数据类型为object的数据对象(除了null)外其实例类型是Object,而数据类型为function的实例类型既是Function,也是Object,原因在于Function.prototype.__proto__ == Object.prototype,所以所有的object和funtion数据类型的数据对象的实例类型都是Object.因为实例类型是按原型链查找的.
看下面的例子:
console.log(typeof Object);//function
console.log(typeof Function);//function
console.log( Object instanceof Function);//true
console.log( Function instanceof Object);//true
console.log( Object.__proto__ == Function.prototype);//true
console.log( Function.__proto__ == Function.prototype);//true
console.log( Function.prototype.__proto__ == Object.prototype);//true
关键在这一步: Function.prototype.__proto__ == Object.prototype
数据类型为object的数据对象,内置__proto__对象
而数据类型为function的数据对象(函数),内置__proto_外,还有scope,prototype,length等对象
关键在于object类型的只有声明创建时,而function类型的除了声明创建时,还有函数运行时
var Fn = function(){};//这是函数声明时
Fn();//这是函数运行时.
javascript中的Function与Object,function与object
标签:
原文地址:http://www.cnblogs.com/elpmis-wu/p/4989936.html