码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中的Function与Object,function与object

时间:2015-11-23 23:21:03      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!