使用原型链改造js

js并不是一门面向对象的编程语言,而是一门基于对象的编程语言,要在js实现继承,需要使用原型链,即prototype来实现。


关于原型链的知识,网上已经有很多,这里不再讨论,这篇文章要讲述的,是如何通过prototype来改造js这门垃圾语言。


以js中解析json字符串并返回js对象为例,可以使用JSON.paser方法,也可以eval执行js字符串,下面我们来试试看:

  1. 对于字符串"{"a":"b"}",JSON.paser("{\"a\":\"b\"}")和eval('('+"{\"a\":\"b\"}"+')')均能返回js object

  2. 对于字符串"{'a':'b'}",JSON.paser("{'a':'b'}")会出错,而eval正常

在很多情况下,作为前端你调用后端API接口获得的json数据有可能是不严格的,而基于eval专门写一个json解析的函数似乎也不够优雅,如果能像jquery那样链式调用就好了,这时候就需要prototype

String.prototype.to_json=function(){
    return eval('('+this.tostring()+')');
}

这样,所有string都拥有了to_json 的方法,前端调用后端API获得数据data,然后解析成json可以直接这样写 data.to_json()

通过prototype,可以改造js语言中许多设计的糟糕的地方


关于我们

青传技术中心是武汉大学青年传媒集团领导下的技术部门,负责青传技术平台的构建,开发与维护


下属部门

  • 设计部
  • 前端部
  • 后端部

核心开发团队

姓名:叶泽韬

领域:Python PHP

院系:国软

部门:后端部

姓名:徐游荧

领域:前端 Java

院系:国软

部门:前端部

姓名:原致远

领域:Python JS

院系:计科

部门:后端部

姓名:邓露艺

领域:Python C++

院系:电信

部门:后端部