JavaScript基础之九(toString,toJSON,valueOf)

javascript有几个非常重要的方法,这些方法是被所有的对象继承的,我们定义的对象不需要再去实现它们,必要时可以重写,并且有的方法会在必要时自动被javascript解析器调用,本文说说它们。

toString:返回一个字符串,代表当前的对象。在字符串环境下会自动被调用。代码说明:

可能这样还不够能说明aaa+”时调用了toString,通过自定义toString可以证明:

非常类似toString还有一个toLocaleString,增加了本地化。

再增加一个重写toString的例子:

 

valueOf:在把对象放到了基础类型环境中(比如运算操作),对象转换为基础类型。看一个例子:

其实如果不对valueOf和toString分别重写,这两个方法都是将对象转换为基础类型(值类型)

 

toJSON:把对象转成json格式的字符串,被JSON.stringify方法自动调用。如果对上面的aaa对象执行console.log(JSON.stringify(aaa));控制台输出:{“name”:”张雪飞”,”age”:28}。可见,忽略了构造函数和prototype。其实只要对象的某个属性是function,该方法也会忽略。与之对应的一个方法是把字符串转换为JSON格式对象:JSON.parse

 

思考:我们所熟知的java,C#,javascript三种语言,几乎都是这样,有一个基类(根对象),并且基类里面有几个定义好的方法被其它对象继承。当然这些语言都是人设计或创造的,为什么这些语言的作者要这样设计呢?我觉得这是一种思想,一种设计思想或创造思想(具体到程序里面的一种面向对象思想),这种思想从哪来呢?我追溯圣经,发现人的历史,第一个被神(上帝)创造的人(亚当),因着神(上帝)对亚当吹了一口气,亚当成为了有灵的活人,此后所有的人都是从亚当而来,我们都继承了亚当,我码起胆子说,人的这种设计思想起源于神(上帝)。相关圣经经文《创世纪2章7节

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/835
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注