急急,阿拉请问javascript的toString问题?

来源:百度知道 编辑:UC知道 时间:2024/06/23 17:18:04
急急,阿拉请问javascript的toString问题?

function kk(){
this.a=123;
}
var s=new kk();
document.write (s);
输出s是[object.Object]

这个s好像默认的带了toString()方法啊,是不是啊?

还有一个问题:
当new下面这些后,好像都没有toString()方法啊,是不是因为Array,Number,String都没有原型对象啊?
是不是Array(),Number(),String(),这些顶级对象都不带原型属性,而只有Object()带prototype原型属性啊.

var a=new Array()
var b=new Number();
var c=new String()

而只有var ss=new Object(),只有new Object(),ss才会继承Object.constructor.prototype=function Object(){}的属性和方法啊?

ss的构造函数是Object().而Object有原型对象,就指向本身,然后ss继承了Object的原型对象的属性和方法.

这个时候我发现document.write (ss)这个ss继承后,有个默认的toString()方法,和这样写法document.write (ss.toString())是一样地,

我只听过有默认的属性,没听过有默认的方法啊,怎么地....javscript怎么这么的牛B啊.........我晕了.....@_@

哎,不要晕!

打个比方:

var shei;

你能说它是,整形,字符串,布尔?

JS 的语法不严密并且是明码传送,但它又有面向对象的概念,所以它永远的,只能是脚本了!

所以你写不写tostring都一样的!这个道理明白了吗?

就怎么多了,BOSS来了!

你可以自己给它添加函数啊,例如这样:

Array.prototype.toString = function(){
var str = "";
for(i=0;i<this.length;i++){
str += ","+this[i];
}
return str.substring(1);
}

var arr = new Array();
arr[0] = "第一个元素";
arr[1] = "第二个元素";

alert(arr);

你试试看这段alert提示什么东西,呵呵
类似的,你可以给Object加一个toString函数,然后alert一个function类型的对象看看

function kk(){
this.a=123;
}

//分别将以下几个注释后看结果,,由此可以看到kk的原型链。。。(prototype chain)

Function.prototype.toString = function (){
return ' this is a description about "function"';
}

kk.prototype.toString = function (){
return ' this is a description about "kk"';<