首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

两个Object各代表啥,该如何解决

2013-12-20 
两个Object各代表啥var box new Object()alert(box)打印的结果是:Object Object这里的格式都代表啥呢[

两个Object各代表啥

var box = new Object();
alert(box);

打印的结果是:
Object Object
这里的格式都代表啥呢

[解决办法]
var a = {},
b = function(){},
c = [];
console.log(Object.prototype.toString.call(a));  //"[object Object]"
console.log(Object.prototype.toString.call(b));  //"[object Function]"
console.log(Object.prototype.toString.call(c));  //"[object Array]"


看看,其实这个是为了能查看,对象的类型的

总的来说,就是js中,所有类型都是基于Object的(除了ie8-版本中的dom元素),Function,Array等引用类型,都是继承自Object对象的。

这种获得对象类型的方法,也算是当前比较常用的了,jquery就是用的这个方法。

至于这个字符串的组成,第一个object,我认为是说,这个元素是继承自Object的,第二个Object就是说,它现在属于引用类型中,具体的哪一种,我代码中的方式返回的字符串,并且前后需要有中括号的。

[解决办法]
alert,这函数,咋处理,
对Primitive Types直接输出值。
对非Primitive Types,输出其toString 方法的到的字符串。

toString方法到底怎么处理。
对function Object(){}      Object.prototype.toString  我猜想是这样的。
Object.prototype.toString = function(){
var s = '[object';
var test = [Function,Boolean,Number,String,Array,Date,Object];
var testMap = ['Function','Boolean','Number','String','Array','Date','Object'];
//s +=typeof this;
for(var i=0;i<test.length;i++){
if(this instanceof test[i]){
s +=' ' + testMap[i] + ']';
break;
}
}
return s;
}

热点排行